
湖海一书生
人总要仰望点什么,向着高远,支撑起生命和灵魂。
使用 OpenCV 读取、显示和写入图片
本文原始链接:Read, Display and Write an Image using OpenCV (opens new window)
世界上最大的计算机视觉库 OpenCV 内置了这三个函数,让我们看看每个函数的具体作用:
imread()
用于读取图片imshow()
用于显示图片imwrite()
用于写入图片
# 读取图片
imread(filename, flags)
方法用于读取图片。这个方法有两个参数:
filename
:图片文件的完整路径flags
:可选标志,指定图片的表示方式。 OpenCV 为这个标志提供了几个选项,最常见的包括:
cv2.IMREAD_COLOR
or1
:默认参数,读入彩色图片,忽略alpha通道。cv2.IMREAD_GRAYSCALE
or0
:读入灰度图片。cv2.IMREAD_UNCHANGED
or-1
:读入完整图片,包括alpha通道。
# 读取图片
img_color = cv2.imread('test.jpg',cv2.IMREAD_COLOR)
img_grayscale = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE)
img_unchanged = cv2.imread('test.jpg',cv2.IMREAD_UNCHANGED)
1
2
3
4
2
3
4
# 显示图片
imshow(window_name, image)
方法用于显示图片。这个方法有两个参数:
window_name
:窗口名称,会显示在窗口上。image
:要显示的图片。
如果要同时显示多个图片,请为每个要显示的图像指定一个新的窗口名称。
imshow()
方法旨在与 waitKey()
和 destroyAllWindows()
/ destroyWindow()
函数一起使用。
waitKey()
是一个键盘绑定函数。
- 它有一个参数,即窗口显示的时间(以毫秒为单位)。
- 如果用户在此时间段内按下任何键,程序将继续。
- 如果传递 0,程序将无限期等待,直到有按键按下。
- 该函数也可以用来检测特殊的按键事件,例如
Esc
或Q
键,从而明确哪个键应该触发哪个行为。
destroyAllWindows()
方法会销毁我们创建的所有窗口;如果要销毁指定的窗口,请使用 destroyWindow()
方法,并将窗口名称作为参数传入。
# 在窗口内展示图片
cv2.imshow('color image',img_color)
cv2.imshow('grayscale image',img_grayscale)
cv2.imshow('unchanged image',img_unchanged)
# 等待键盘事件
cv2.waitKey(0)
# 销毁所有已创建的窗口
cv2.destroyAllwindows()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 写入图片
最后,我们使用 imwrite(filename, image)
方法来将图片写入/保存到文件系统。这个方法有两个参数:
filename
:文件名,必须包含后缀名,例如.jpg
,.png
等。image
:要保存的图片。
如果保存成功,这个方法会返回 true
imwrite("grayscale.jpg", img_grayscale)
1