ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 数据建模-数据集处理 ***** **以下内容均按照作者的个人思路去编排,如果有更好的想法等,则以自己的优先** ***** ## 一、图像切割 ### 1. 定义:图像切割的意思是**截取图像的某一部分,达到分割的目的** ### 2. 范例: ①首先是原始图像 ![](https://img.kancloud.cn/5d/33/5d335312b6b933ca5f7253f914a21c0c_188x188.png)  显然这是一幅山景图,如果把这个图像**画两条水平和竖直的对称轴,图像就可以被分为四块** ![](https://img.kancloud.cn/84/8d/848d41e0d7b7bf88afb6af5e03ed80b9_150x150.png) 现在我们**想要截取图像的某一角**,该怎么实现呢?下面的‘**代码实践**‘将会教给大家 ②'代码实践' ``` 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) #显示图片 --------------------------------------------------------------------- ``` 结果:(与之类似即可) ![](https://img.kancloud.cn/b3/2c/b32cbdd8de4b9766bc910bc1ba0809f9_657x187.png) * 拓展学习 上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以[访问本链接](https://blog.csdn.net/weixin_40633696/article/details/108838547?spm=1001.2101.3001.6650.15&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-15.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-15.no_search_link)进行学习 ***** ## 二、图像几何变换 1. ### 翻转图片 ``` #Ⅰ.读取图片 import cv2 img = 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() ``` 结果:(与之类似即可) ![](https://img.kancloud.cn/ac/c5/acc593ff9eb6d808ae94ee455aacdd8a_1779x942.png) ***** ### 2. 缩放图片 ``` import cv2 img = 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,y x, 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() ``` 结果:(与之类似即可) ![](https://img.kancloud.cn/96/a6/96a673ca6a8095369f71c6cdd5967699_1170x798.png) * 拓展学习 上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以[访问本链接](https://www.jianshu.com/p/79052fbf477d)进行学习 ***** ### 3. 剪裁图片 ``` import cv2 import matplotlib.pylab as plt img = 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) ``` 结果:(与之类似即可) ![](https://img.kancloud.cn/7b/f8/7bf8ab23a886fa2937143fd85d942674_671x253.png) * 拓展学习 上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以[访问本链接](https://www.jb51.net/article/211183.htm)进行学习 ***** ### 4. 灰度化图片 ``` 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() ``` 结果:(与之类似即可) ![](https://img.kancloud.cn/18/a2/18a2424fab1449154851920f993e8e35_462x188.png) * 拓展学习 上述范例中,给予的是最基础的例子,如果大家想要更深一步的去研究,可以[访问本链接](https://www.cnblogs.com/zhouzetian/p/12837120.html)进行学习