1. 获取图像的属性
- 形状:行、列、通道数
- 像素数目
- 图像的数据类型
shape
可以获取图像的形状,返回包含行数,列数,通道数的元组。
灰度图像 返回行数和列数
彩色图像 返回行数,列数和通道数
size
可以获取图像的像素数目。
灰度图像 返回行数x列数
彩色图像 返回行数x列数x通道数
dtype
返回的是图像的数据类型。
import cv2 img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lena256.bmp") print("形状为:",img1.shape) print("数目为:",img1.size) a,b,c = img1.shape print(a,b,c) img_color = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png") print("形状为:",img_color.shape) print("像素数目为:",img_color.size) print("图像类型:",img_color.dtype) cv2.imshow("12",img1) cv2.imshow("color",img_color) cv2.waitKey(0) cv2.destroyAllWindows()
结果
形状为: (256, 256, 3) 数目为: 196608 256 256 3 形状为: (512, 512, 3) 像素数目为: 786432 图像类型: uint8
2. 图像ROI
ROI(region of interest),感兴趣区域。
• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
#%%ROI import cv2 import numpy as np img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png") img2 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\girl.bmp") cv2.imshow("origial",img1) cv2.imshow("origial1",img2) face = img1[220:400,250:350] img2[200:380,250:350] = face cv2.imshow("become face",img2) #cv2.imshow("face",face) #cv2.imshow("reslust",img1) cv2.waitKey(0) cv2.destroyAllWindows()
3. 通道的拆分与合并
3.1. 通道的拆分
方法有三
''' #第一种拆分方法 b = img1[:,:,0] g = img1[:,:,1] r = img1[:,:,2] #第二种处分方法 b,g,r = cv2.split(img1) #第三种拆分方法 b = cv2.split(img1)[0] g = cv2.split(img1)[1] r = cv2.split(img1)[2] ''' #具体代码 import cv2 img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png") print(img1.shape) #第一种拆分方法 b = img1[:,:,0] g = img1[:,:,1] r = img1[:,:,2] #第二种处分方法 b,g,r = cv2.split(img1) #第三种拆分方法 b = cv2.split(img1)[0] g = cv2.split(img1)[1] r = cv2.split(img1)[2] cv2.imshow("blue",b) cv2.imshow("green",g) cv2.imshow("red",r) cv2.waitKey(0) cv2.destroyAllWindows()
3.2. 通道的合并
通道的合并1 import cv2 img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png") b,g,r = cv2.split(img1) bgr = cv2.merge([b,g,r]) rgb = cv2.merge([r,g,b]) cv2.imshow("merge_bgr",bgr) cv2.imshow("merge_rgb",rgb) cv2.waitKey(0) cv2.destroyAllWindows()
#%%通道的合并2 import cv2 img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png") rows,cols,chn = img1.shape b,_,_ = cv2.split(img1) g = np.zeros((rows,cols),dtype = b.dtype) r = np.zeros((rows,cols),dtype = b.dtype) img2 = cv2.merge([b,g,r]) cv2.imshow("merge",img2) cv2.waitKey(0) cv2.destroyAllWindows()