【OpenCV入门】图像的基本操作Ⅱ
图像的通道数
- 如果图像是灰度图像,则通道数为1;如果是彩色图像,是通道数为3;至于四通道就是BGR三个通道加上一个透明通道。
获取像素值
img[x,y] 与 img[x,y,z] 的区别:
- 如果cv2.imread()的第二个参数是1的话,img[]读出的是该处的B、G、R像素值。如果cv2.imread()的第二个参数是0的话,那么img[100,100]的值是灰度值。
- img[x,y,z]中的z只能取0,1,2三个数,分别对应B、G、R值。代表的是取(x,y)处得灰度值。
img[100,100] = [255,255,255]
- 代表的给(100,100)处的像素赋像素值(255,255,255)。
img.item()和img.itemset()
-
item()是获取像素值;itemset()函数是修改像素值。
-
参考链接:
图像的三要素:shape、size、datatype
-
shape:宽度、高度、通道数。
print(img.shape)
-
size:大小。
print(img.size)
-
datatype:数据类型。
print(img.datatype)
图像拷贝:
直接上代码吧。挺简单的。
import cv2
import numpy as np
img = cv2.imread("G:/python_program/OpenCV_ROI/3.jpg")
ROI = img[100:200,200:400]
img[50:150,250:450] = ROI
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
拆分及合并图像通道
拆分
B,G,R = cv2.split(img)
- 拆分的顺序是BGR。而不是RGB。
- 拆分后显示的图片均为灰色。因为拆分后的图片均是单通道图像。可以通过上述的shape来输出查看。
合并
cv2.merge([B,G,R])
cv2.imshow("B",B)
print(B.shape)
cv2.imshow("G",G)
print(G.shape)
cv2.imshow("R",R)
print(R.shape)
card = img.copy()
card[:,:,0] = 0
cv2.imshow("card",card)
zeros = cv2.merge([B,G,R])
cv2.imshow("zeros",zeros)
cv2.waitKey(0)
cv2.destroyAllWindows()
有不懂得滴滴我!