本章为 OpenCV 图像入门,主要讲解了如何加载图片,显示图片和保存图片。
读取图像
使用 cv.imread()
函数读取一张图像。
cv.IMREAD_COLOR
:加载彩色图像,任何图像的透明度都会被忽略,它是默认标志;cv.IMREAD_GRAYSCALE
:以灰度模式加载图像;cv.IMREAD_UNCHANGED
:加载图像,包括 alpha 通道。
注意:
- 也可以简单分别传递整数1、0或-1,而不是这三个 flag。
python
import numpy as np
import cv2 as cv
# 用灰度模式加载图像
img = cv.imread('01.jpg', 0)
注意 :
图像路径错误,它不会抛出任何错误,但是打印 img
会返回 None
。
显示图像
用 cv.imshow()
函数在窗口显示图像,窗口自动适应图像的大小。
- 参数1:窗口名(str);
- 参数2:图像
你可以根据需要创建任意数量的窗口,但是窗口名字要不同。
python
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
cv.waitKey()
是一个键盘绑定函数,它的参数是以毫秒为单位的时间。该函数为任意键盘事件等待指定毫秒。如果你在这段时间内按下任意键,程序将继续。如果传的是0,它会一直等待键盘按下。它也可以设置检测特定的按键。
cv.destroyAllWindows()
销毁我们创建的所有窗口。如果你想销毁任意指定窗口,应该使用函数 cv.destroyWindow()
参数是确切的窗口名。
注意:
有一种特殊情况,你可以先创建一个窗口然后加载图像到该窗口。在这种情况下,你能指定窗口是否可调整大小。它是由这个函数完成的 cv.namedWindow()
。默认情况下,flag 是 cv.WINDOW_AUTOSIZE
。但如果你指定了 flag 为 cv.WINDOW_NORMAL
,你能调整窗口大小。当图像尺寸太大,在窗口中添加滚动条是很有用的。
代码:
python
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
保存图像
保存图像,使用函数 cv.imwrite()
。
- 参数1:文件名;
- 参数2:要保存的图像。
python
# 将该图像保存为 PNG 格式
cv.imwrite('save.png', img)
总结
下面程序以灰度模式读取图像,显示图像,如果你按下 's' 会保存和退出,或者按下 ESC 退出不保存。
python
import numpy as np
import cv2 as cv
img = cv.imread('image.jpg', 0)
cv.imshow('image', img)
k = cv.waitKey(0)
if k == 27: # ESC
cv.destroyAllWindows()
elif k == ord('s'): # s
cv.imwrite('save.png', img)
cv.destroyAllWindows()
注意:
如果你使用的是 64 位机器,你需要修改 k = cv.waitKey(0)
为 k = cv.waitKey(0) & 0xFF