获取图像属性
1: 形状-shape: 通过shape关键字获取图像的形状,返回包含行数、列数、通道数的元祖。其中灰度图像返回行数和列数,彩色图像返回行数、列数和通道数
importcv2
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)#返回行数,列数,通道数
print(img.shape) #(515, 425, 3)
2:像素数目-size: 通过size关键字获取图像的像素数目,其中灰度图像返回行数 * 列数,彩色图像返回行数 * 列数 * 通道数
importcv2
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)print(img.size) #656625
3:图像类型-dtype: 通过dtype关键字获取图像的数据类型,通常返回uint8
importcv2
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)#获取图像类型, 通常返回uint8
print(img.dtype) #uint8
图像通道处理
1: 通道拆分: OpenCV读取的彩色图像由B、G、R三原色组成,可以通过下面代码获取不同的通道.(b=img[位置参数, 0] g=img[位置参数, 1] r=img[位置参数, 2])
借助split()函数拆分通道
importcv2
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)#拆分通道
b, g, r =cv2.split(img)
cv2.imshow("B", b)
cv2.imshow("G", g)
cv2.imshow("R", r)
cv2.waitKey(0)
cv2.destroyAllWindows()
2:通道合并: 图像通道合并主要调用merge()函数实现(m = cv2.merge([r, g, b]))
importcv2
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)
b, g, r=cv2.split(img)
m=cv2.merge([r, g, b])
cv2.imshow("Demo", m)
可以修改通道之后再合并
importcv2importnumpy as np
img= cv2.imread("result.jpg", cv2.IMREAD_UNCHANGED)rows, cols, chn=img.shape
b1=cv2.split(img)[0]#G, R通道设置为0,
g1 = np.zeros((rows, cols), dtype=img.dtype)
r1= np.zeros((rows, cols), dtype=img.dtype)
m1=cv2.merge([b1, g1, r1])
cv2.imshow("Demo1", m1)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果如下:
转自:https://blog.csdn.net/Eastmount/category_7912787.html