retval = cv2.imread( filename[, flags] )
cv2.imshow( winname, mat )
retval = cv2.waitKey( [delay] )
在实际使用中,可以通过函数cv2.waitKey()获取按下的按键,并针对不同的键做出不同的反应,从而实现交互功能。例如,如果按下A 键,则关闭窗口;如果按下B 键,则生成一个窗口副本。
import cv2
lena=cv2.imread("lena.bmp")
cv2.imshow("demo", lena )
key=cv2.waitKey()
if key==ord('A'):
cv2.imshow("PressA",lena)
elif key==ord('B'):
cv2.imshow("PressB",lena)
cv2.destroyWindow( winname )
在实际使用中,该函数通常与函数cv2.waitKey()组合实现窗口的释放。
import cv2
lena=cv2.imread("lena.bmp")
cv2.imshow("demo", lena )
cv2.waitKey()
cv2.destroyWindow("demo")
cv2.destroyAllWindows( )
import cv2
lena=cv2.imread("lena.bmp")
cv2.imshow("demo1", lena )
cv2.imshow("demo2", lena )
cv2.waitKey()
cv2.destroyAllWindows()
retval = cv2.imwrite( filename, img[, params] )
二值图像是指仅仅包含黑色(0)和白色(1)两种颜色的图像。
通常,计算机会将灰度处理为256 个灰度级,用数值区间[0, 255]来表示。其中,数值“255”表示纯白色,数值“0”表示纯黑色,其余的数值表示从纯白到纯黑之间不同级别的灰度。
在 RGB色彩空间中,存在R(red,红色)通道、G(green,绿色)通道和B(blue,蓝色)通道,共三个通道。每个色彩通道值的范围都在[0, 255]之间,我们用这三个色彩通道的组合表示颜色。
一般情况下,在RGB色彩空间中,图像通道的顺序是R→G→B,即第1个通道是R 通道,第2个通道是G 通道,第3个通道是B 通道。需要特别注意的是,在OpenCV 中,通道的顺序是B→G→R。
在OpenCV 中,最小的数据类型是无符号的8位数。因此,在OpenCV 中实际上并没有二值图像这种数据类型,二值图像经常是通过处理得到的,然后使用0表示黑色,使用255表示白色。
在面向Python 的OpenCV中,图像就是Numpy库中的数组。一个OpenCV 灰度图像是一个二维数组,可以使用表达式访问其中的像素值。例如,可以使用image[0,0]
访问图像image 第0行第0列位置上的像素点。第0行第0列位于图像的左上角,其中第1 个索引表示第0行,第2个索引表示第0列。
RGB 模式的彩色图像在读入OpenCV 内进行处理时,会按照行方向依次读取该RGB 图像的B通道、G通道、R通道的像素点,并将像素点以行为单位存储在ndarray 的列中。
可以使用表达式访问数组内的值。例如,可以使用image[0,0,0]
访问图像image的B通道的第0行第0列上的像素点,式中:
#例:使用Numpy 生成一个三维数组,用来观察三个通道值的变化情况
import numpy as np
import cv2
img=np.zeros((300,300,3),dtype=np.uint8)
img[:,0:100,0]=255
img[:,100:200,1]=255
img[:,200:300,2]=255
print("img=\n",img)
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()
img.item(行,列[,通道])
itemset((行,列[,通道]),新值)
b,g,r=cv2.split(img)
bgr=cv2.merge([b,g,r])
img.shape
如果是彩色图像,则返回包含行数、列数、通道数的数组;如果是二值图像或者灰度图像,则仅返回行数和列数。通过该属性的返回值是否包含通道数,可以判断一幅图像是灰度图像(或二值图像)还是彩色图像。
img.size
返回图像的像素数目。其值为“行×列×通道数”,灰度图像或者二值图像的通道数为1。
img.dtype
返回图像的数据类型。