湖海一书生
人总要仰望点什么,向着高远,支撑起生命和灵魂。
使用 OpenCV 读取、显示和写入图片
本文原始链接:Read, Display and Write an Image using OpenCV (opens new window)
世界上最大的计算机视觉库 OpenCV 内置了这三个函数,让我们看看每个函数的具体作用:
imread()用于读取图片imshow()用于显示图片imwrite()用于写入图片
# 读取图片
imread(filename, flags) 方法用于读取图片。这个方法有两个参数:
filename:图片文件的完整路径flags:可选标志,指定图片的表示方式。 OpenCV 为这个标志提供了几个选项,最常见的包括:
cv2.IMREAD_COLORor1:默认参数,读入彩色图片,忽略alpha通道。cv2.IMREAD_GRAYSCALEor0:读入灰度图片。cv2.IMREAD_UNCHANGEDor-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