数据建模-数据集处理
undefined数据建模-数据集处理
以下内容均按照作者的个人思路去编排,如果有更好的想法等,则以自己的优先
undefined一、图像切割
undefined1. 定义:图像切割的意思是截取图像的某一部分,达到分割的目的
undefined2. 范例:
①首先是原始图像

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

现在我们想要截取图像的某一角,该怎么实现呢?下面的‘代码实践‘将会教给大家
②'代码实践'
import cv2# 【指定图像文件路径(此处使用绝对路径)】img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/seg_train/seg_train/forest/8.jpg',1)#(1彩色读取,0灰度读取)##image_width = img.shape[1]#图像的水平尺寸(宽度)image_height = img.shape[0]#图像的垂直尺寸(高度)### 【裁剪图像,0,0代表图像左上角的坐标(起始坐标)】# 【左上部分截取】imCrop_left_top = img[0 : image_height//2, 0:image_width//2]# 【左下部分截取】imCrop_left_down = img[image_height//2 : image_height, 0:image_width//2]#【右上部分截取】imCrop_right_top = img[0 : image_height//2, image_width//2:image_width]#【右下部分截取】imCrop_right_down = img[image_height//2 : image_height, image_width//2:image_width]# #######显示图片的代码######### 【显示原始图像】cv2.imshow('image',img) #(窗口标题,图像)cv2.namedWindow('image',cv2.WINDOW_NORMAL)#(窗口标题,cv2.WINDOW_AUTOSIZE:自动调节大小/cv2.WINDOW_NORMAL:手动调节大小)# 【显示左上图像】cv2.imshow("left_top", imCrop_left_top)# 【显示左下图像】cv2.imshow("left_down", imCrop_left_down)# 【显示右上图像】cv2.imshow("right_top", imCrop_right_top)# 【显示右下图像】cv2.imshow("right_down", imCrop_right_down)##以下两行代码很重要cv2.waitKey()#(展示图像的窗口持续显示多少秒,0/空:一直显示直到按下键位)cv2.destroyAllWindows()#(删除所有图像展示窗口)--------------------------------------------------------------------##亦可用matplotlib显示#import matplotlib.pylab as plt #(加载库)#plt.subplot(2, 2, 1) #(行,列,位置)#plt.imshow(img) #显示图片---------------------------------------------------------------------
结果:(与之类似即可)

拓展学习
上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习
undefined二、图像几何变换
#Ⅰ.读取图片import cv2img = cv2.imread('D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg',1)#(注意是反斜杠)#Ⅱ.水平翻转img1=cv2.flip(img,1)#Ⅲ.垂直翻转img2=cv2.flip(img,0)#Ⅲ.水平垂直翻转img3=cv2.flip(img,-1)#Ⅳ.展示图片cv2.imshow('image',img)cv2.imshow('image1',img1)cv2.imshow('image2',img2)cv2.imshow('image3',img3)#*必要的部分cv2.waitKey()cv2.destroyAllWindows()
结果:(与之类似即可)

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

拓展学习
上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习
undefined3. 剪裁图片
import cv2import matplotlib.pylab as pltimg = cv2.imread("D:/Source Code/Python/Conda/AI/exampls/pokeman/pokemanpicture/pikachu/1.jpg",1)#直接读取图像会变色,因为opencv是按照bgr通道读取的#读取源图像,并显示(r, g, b) = cv2.split(img)#(把img图像的通道拆分为r通道,g通道,b通道)img = cv2.merge([b, g, r])#(将r通道,g通道,b通道合并成bgr通道,赋给img)plt.subplot(2, 2, 1)plt.imshow(img)#对图像进行剪裁img1=img[250:750,0:500]#保留的部分(y:起始:终止,x:起始:终止)plt.subplot(2,2,2)plt.imshow(img1)
结果:(与之类似即可)

拓展学习
上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以访问本链接进行学习
undefined4. 灰度化图片
import cv2#直接在读取的时候进行灰度化img = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",0)print(img.shape)#采用cv2.COLOR_RGB2GRAY函数img1 = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",1)print(img1.shape)dst = cv2.cvtColor(img1,cv2.COLOR_RGB2GRAY)#灰度化print(dst.shape)cv2.imshow("img",img)cv2.imshow("img0",img1)cv2.imshow("dst",dst)cv2.waitKey()
结果:(与之类似即可)

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