OpenCV - 图像的IO操作
目录
1. 读取图像 - cv.imread()
2. 显示图像 - cv.imshow()
3. 保存图像 - imwrite()
4. 总结
1. 读取图像 - cv.imread()
在OpenCV图像处理中,API指的是OpenCV库提供的应用程序接口,本质是一系列封装好的函数、类或方法,专门用于调用OpenCV的图像处理的能力,无需开发者手动编写底层算法。简单来说,这些API就是OpenCV给开发者的“工具按钮”。
读取图像要使用的API为:
cv.imread('图片路径', 标志)
• 参数1:要读取图像的路径
• 参数2:读取方式的标志
1. cv.IMREAD_COLOR 或 1:以彩色模式加载图像,任何图像的透明度都将被忽略,这里默认参数
2. cv.IMREAD_GRAYSCALE 或 0:以灰度模式加载图像
3. cv.IMREAD_UNCHANGED 或 -1:按原样读取,包括alpha通道的加载图像模式
可以使用1、0、-1来分别代表上面三个标志
参考代码:
import numpy as np
import cv2 as cv
# 以灰度形式读取图像
img_gray = cv.imread('test1.jpg', 0)
# 以彩色模式读取
img_color = cv.imread('test1.jpg', 1)
注意:如果加载的路径有错误,不会报错,会返回一个None值
2. 显示图像 - cv.imshow()
这个函数会创建一个窗口,并在里面显示图片矩阵
显示图像要使用的API为:
cv.imshow('窗口名称', 图像矩阵)
• 参数1:显示图像的窗口名称,以字符串类型表示
• 参数2:要加载的图像
注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。
参考代码:
#opencv中显示
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()
1. cv2.waitKey(0)
:这是一个键盘绑定函数,非常重要!
• 参数 0 表示程序会无期限等待用户的按键操作
• 如果你写成 cv2.waitKey(5000)
,则表示等待5秒(5000毫秒)后自动关闭窗口。
2. cv2.destroyAllWindows()
:销毁我们创建的所有窗口。这是一个好的编程习惯,用来清理内存。
为什么必须要有waitKey
?
因为没有它,窗口会一闪而过,你根本来不及看。waitKey
让程序暂停,等你按下任意键后再继续执行后面的销毁命令。
3. 保存图像 - imwrite()
这个函数将处理后的图像矩阵(NumPy数组)保存成一个图片文件。
保存图像要使用的API为:
cv.imwrite('保存的文件名', 图像矩阵)
• 参数1:文件名要保存在哪里,OpenCV会根据你指定的扩展名(如.jpg
, .png
)来决定保存的格式。
• 参数1:要保存的图像,你要保存的那个图像变量(比如我们刚才读进来的img
,或者处理过的灰度图img_gray
)。
cv.imwrite('test1.png', img)
4. 总结
import numpy as np
import cv2 as cv# 1. 读取图像
img = cv.inread('test1.jpg', 0)# 2. 显示图像
cv.imshow('image', img)
cv.waitKey(0)# 3. 保存图像
cv.imwrite('test2.png', img)# 最后关闭所有窗口
cv.destroyAllWindows()