图像处理的基本操作
在图像处理的过程中,读取图像、显示图像和保存图像是最基本的操作
1.读取图像
retval = cv2.imread( filename[, flags])
-retavl:返回值,其值是读取到的图像。如果未读取到图像,则返回None
-filename:表示要读取的图像的完整路径
-flags:读取标记。该标记用来控制读取文件的类型,具体如下表所示(表中第一列和三列是等价的):
值 | 含义 | 数值 |
---|---|---|
cv2.IMREAD_UNCHANGED | 保持原格式不变 | -1 |
cv.IMREAD_GRAYSCALE | 将图像调整为单通道的灰度图像 | 0 |
cv2.IMREAD_COLOR | 将图像调整为3通道的BGR图像。该值是默认值 | 1 |
cv2.IMREAD_ANYDEPHT | 当载入的图像深度是16位或者32位时,就返回其对应深度的图像;否则将其转换为8位图像 | 2 |
cv.IMREAD_ANYCOLOR | 以任何可能的颜色格式读取图像 | 4 |
cv2.IMREAD_LOAD_GDAL | 使用gdal驱动程序加载图像 | 8 |
… | … | … |
2.显示图像
2.1.namewindow函数
函数cv2.namewindow函数用来创建指定名称的窗口,其语法格式为
None=cv.namewindow(winna)
-winna是要创建的窗口的名称
2.2.imshow函数
函数cv.imshow()用来显示图像,其语法格式为:
None = cv.imshow(winna, mat)
-winna是窗口名称
-mat是要显示的图像
2.3waitKey函数
函数cv2.waitKey函数用来等待按键,当用户按下按键后,该语句会被执行,并获取返回值。其语法格式为:
retval = cv2.waitKey( [delay])
-retval表示返回值。如果没有按键被按下,则返回-1;如果有按键被按下,则返回该按键的ASDII值
-delay表示等待按键触发的事件,单位是ms。当该值是负数或者零时,表示无限等待。该值默认为0
在实际应用中,可以通过函数cv2.waitKey()获取按下的按键,并针对不同的键作出不同的反应,从而实现交互功能。
有关cv2.waitKey()函数的另外角度的理解,该函数能够让程序实现暂停功能。当程序运行到该语句时,会按照参数delay的设定等待特定的时长。delay值的不同会有不同的结果:一、如果参数delay为0或者负数,则程序会一直等待。知道有按键的事件发生时,才会执行后续程序;二、如果参数delay的值为一个正数,则在这段时间内,程序等待按下键盘按键。当有按下键盘按键的事件发生时,就会执行后续程序语句,如果在delay参数所指定的时间内一直没有这样的事件发生,则超过等待时间后,继续执行后续的程序语句
2.4destroyWindow函数
函数cv2.destroyWindow()用来释放指定窗口,其语法格式为:
None = cv.destroyWindow(winna)
-winna:窗口名称
2.5destroyAllWindow函数
函数cv2.destroyAllWindow()用来释放所有窗口,其语法格式为:
None = cv.destroyAllWindow()
3.保存图像
OpenCV提供了函数cv2.imwrite(),用来保存图像,该函数的语法格式为:
retval = cv.imwrite(filename, img[, params])
-retval:返回值。如果保存成功,则返回True;如果保存不成功,则返回False
-filename:要保存的目标文件的完整路径名,包含文件扩展名
-img:被保存图像的名称
-params:保存类型参数,是可选的
程序实现上述功能:
import cv2
#读取图像
img_bgr = cv2.imread("lenacolor.png")
#读取图像并将其调整为单通道的灰度图像
img_gray = cv2.imread("lenacolor.png", 0)
#创建窗口
cv2.namedWindow("BGR")
cv2.imshow("BGR", img_bgr)
#imshow可以引用一个不存在的窗口
cv2.imshow("GRAY", img_gray)
k = cv2.waitKey()
if k == ord("A"):
#保存图像
cv2.imwrite("a.png", img_gray)
cv2.destroyAllWindows()
3.参考文献
《OpenCV轻松入门》 李立宗著
OpenCV官方文档:https://docs.opencv.org/4.1.2/dc/d4d/tutorial_py_table_of_contents_gui.html
此文章为自学习所用,如有侵权,请联系删除