数据建模-数据集处理

undefined数据建模-数据集处理


以下内容均按照作者的个人思路去编排,如果有更好的想法等,则以自己的优先


undefined一、图像切割

undefined1. 定义:图像切割的意思是截取图像的某一部分,达到分割的目的

undefined2. 范例:

①首先是原始图像

数据建模-数据集处理 - 图1

显然这是一幅山景图,如果把这个图像画两条水平和竖直的对称轴,图像就可以被分为四块

数据建模-数据集处理 - 图2

现在我们想要截取图像的某一角,该怎么实现呢?下面的‘代码实践‘将会教给大家

②'代码实践'

  1. import cv2
  2. # 【指定图像文件路径(此处使用绝对路径)】
  3. img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/seg_train/seg_train/forest/8.jpg',1)#(1彩色读取,0灰度读取)
  4. ##
  5. image_width = img.shape[1]#图像的水平尺寸(宽度)
  6. image_height = img.shape[0]#图像的垂直尺寸(高度)
  7. ### 【裁剪图像,0,0代表图像左上角的坐标(起始坐标)】
  8. # 【左上部分截取】
  9. imCrop_left_top = img[0 : image_height//2, 0:image_width//2]
  10. # 【左下部分截取】
  11. imCrop_left_down = img[image_height//2 : image_height, 0:image_width//2]
  12. #【右上部分截取】
  13. imCrop_right_top = img[0 : image_height//2, image_width//2:image_width]
  14. #【右下部分截取】
  15. imCrop_right_down = img[image_height//2 : image_height, image_width//2:image_width]
  16. # #######显示图片的代码########
  17. # 【显示原始图像】
  18. cv2.imshow('image',img) #(窗口标题,图像)
  19. cv2.namedWindow('image',cv2.WINDOW_NORMAL)#(窗口标题,cv2.WINDOW_AUTOSIZE:自动调节大小/cv2.WINDOW_NORMAL:手动调节大小)
  20. # 【显示左上图像】
  21. cv2.imshow("left_top", imCrop_left_top)
  22. # 【显示左下图像】
  23. cv2.imshow("left_down", imCrop_left_down)
  24. # 【显示右上图像】
  25. cv2.imshow("right_top", imCrop_right_top)
  26. # 【显示右下图像】
  27. cv2.imshow("right_down", imCrop_right_down)
  28. ##以下两行代码很重要
  29. cv2.waitKey()#(展示图像的窗口持续显示多少秒,0/空:一直显示直到按下键位)
  30. cv2.destroyAllWindows()#(删除所有图像展示窗口)
  31. --------------------------------------------------------------------
  32. ##亦可用matplotlib显示
  33. #import matplotlib.pylab as plt #(加载库)
  34. #plt.subplot(2, 2, 1) #(行,列,位置)
  35. #plt.imshow(img) #显示图片
  36. ---------------------------------------------------------------------

结果:(与之类似即可)

数据建模-数据集处理 - 图3

  • 拓展学习

    上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习


undefined二、图像几何变换

  • 翻转图片

  1. #Ⅰ.读取图片
  2. import cv2
  3. img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg',1)#(注意是反斜杠)
  4. #Ⅱ.水平翻转
  5. img1=cv2.flip(img,1)
  6. #Ⅲ.垂直翻转
  7. img2=cv2.flip(img,0)
  8. #Ⅲ.水平垂直翻转
  9. img3=cv2.flip(img,-1)
  10. #Ⅳ.展示图片
  11. cv2.imshow('image',img)
  12. cv2.imshow('image1',img1)
  13. cv2.imshow('image2',img2)
  14. cv2.imshow('image3',img3)
  15. #*必要的部分
  16. cv2.waitKey()
  17. cv2.destroyAllWindows()

结果:(与之类似即可)

数据建模-数据集处理 - 图4


undefined2. 缩放图片

  1. import cv2
  2. img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg',1)#(注意是反斜杠)
  3. #(打印原图片的尺寸,输出值为高,宽,通道数:1:单色(灰色等),2:不常见,可忽略,3:常指RGB彩色,4:在'3'的基础上多了'透明度'的通道)
  4. print(img.shape)
  5. # 将图片高和宽分别赋值给x,y
  6. x, y = img.shape[0:2]
  7. # 缩放到原来的二分之一,这里要注意,输出尺寸格式为(宽,高)
  8. img_test1 = cv2.resize(img, (int(y / 2), int(x / 2)))
  9. #打印缩放后的图片的尺寸
  10. print(img_test1.shape)
  11. # 显示原图
  12. cv2.imshow('OriginalPicture', img)
  13. #显示缩放后的图
  14. cv2.imshow('resize0', img_test1)
  15. cv2.waitKey()
  16. cv2.destroyAllWindows()

结果:(与之类似即可)

数据建模-数据集处理 - 图5

  • 拓展学习

    上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习


undefined3. 剪裁图片

  1. import cv2
  2. import matplotlib.pylab as plt
  3. img = cv2.imread("D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg",1)
  4. #直接读取图像会变色,因为opencv是按照bgr通道读取的
  5. #读取源图像,并显示
  6. (r, g, b) = cv2.split(img)#(把img图像的通道拆分为r通道,g通道,b通道)
  7. img = cv2.merge([b, g, r])#(将r通道,g通道,b通道合并成bgr通道,赋给img)
  8. plt.subplot(2, 2, 1)
  9. plt.imshow(img)
  10. #对图像进行剪裁
  11. img1=img[250:750,0:500]#保留的部分(y:起始:终止,x:起始:终止)
  12. plt.subplot(2,2,2)
  13. plt.imshow(img1)

结果:(与之类似即可)

数据建模-数据集处理 - 图6

  • 拓展学习

    上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习


undefined4. 灰度化图片

  1. import cv2
  2. #直接在读取的时候进行灰度化
  3. img = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",0)
  4. print(img.shape)
  5. #采用cv2.COLOR_RGB2GRAY函数
  6. img1 = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",1)
  7. print(img1.shape)
  8. dst = cv2.cvtColor(img1,cv2.COLOR_RGB2GRAY)#灰度化
  9. print(dst.shape)
  10. cv2.imshow("img",img)
  11. cv2.imshow("img0",img1)
  12. cv2.imshow("dst",dst)
  13. cv2.waitKey()

结果:(与之类似即可)

数据建模-数据集处理 - 图7

  • 拓展学习

    上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习