OpenCV学习之旅:图像处理的基本操作
图像的读取、显示和保存
可以使用cv.imread()函数读取图像。第一个参数是图片的路径,第二个参数是图片被读取的方式,包括以下几种:
- cv.IMREAD_COLOR : 加载彩色图像。任何图像的透明度都会被忽视。这是默认参数。
- cv.IMREAD_GRAYSCALE : 以灰度模式加载图像
- cv.IMREAD_UNCHANGED : 加载图像,包括alpha通道
我们也可以分别使用参数
1、0和-1代替。
例如
1 | import cv2 as cv |
运行代码会得到lena图像的像素值:
1 | [[[125 137 226] |
注意:
即使图像路径错误,也不会引发任何错误,只是
print(img)会给出None
显示图像
namedWindow()用来创建指定的窗口,例如
1 | cv2.namedWindow("image") |
会创建一个名字为image的窗口。
imshow()函数用来显示图像,一般格式如下:
1 | None = cv2.imshow(window, image) |
其中,window是窗口的名字,image是要显示的图像。
waitKey()函数用来等待按键,当有按键被按下时,该语句执行,一般格式如下:
1 | retval = cv2.waitKey([delay]) |
delay表示等待键盘触发的时间(单位:ms),当该值为负或0时表示无限等待,默认为0。
destroyAllWindows()用来释放所有窗口,一般格式为:
1 | None = cv2.destroyAllWindows() |
如果要释放任何特定的窗口,我们可以使用函数cv.destroyWindow()并在在其中传递确切的窗口名称作为参数。
代码示例:
1 | import cv2 as cv |
产生如下窗口:
保存图像
使用函数cv2.imwrite()保存图像。
第一个参数是文件名,第二个参数是要保存的图像。
1 | import cv2 as cv |
图像通道的基本操作
split()拆分函数
一般格式:
1 | b, g, r = cv2.split(img) |
例如:
1 | import cv2 as cv |
效果如下:
merge()合并函数
通道合并是通道拆分的逆过程,可以将三个通道的灰度图像合并为一张彩色图像。基本格式为:
1 | imagebgr = cv2.merge([b, g, r]) |
例如:
1 | import cv2 as cv |
图像属性的获取
在进行图像处理时经常需要获取图像的大小、类型等属性信息。
shape:表示图像的大小。如果是彩色图像,则返回包含行数、列数和通道数的数组;如果是二值图像或灰度图像,则返回包含行数和列数的数组。size:表示返回的图像的像素数目。dtype:表示返回的图像的数据类型。
例如:
1 | import cv2 as cv |
1 | image.shape (512, 512, 3) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Life of 崃!
