OpenCV学习笔记1基础:读取显示保存图像
Posted xietx1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV学习笔记1基础:读取显示保存图像相关的知识,希望对你有一定的参考价值。
OpenCV 读取图片非常方便,但是需要注意 OpenCV 默认使用 BGR 模式,而不是 RGB 模式,如果需要使用其他工具处理,需要注意这一点。
1. 读取图像
使用 imread 函数读取图像:
import cv2
img = cv2.imread('test.jpg') # 默认使用BGR模式(IMREAD_COLOR)读入
也可以使用其他模式入读照片,如灰度模式:
img = cv2.imread('images/jm.jpg', cv2.IMREAD_GRAYSCALE)
所有的模式如下所示:
读取模式 | 说明 |
---|---|
IMREAD_UNCHANGED = -1 | 原图,包括 alpha 通道 |
IMREAD_GRAYSCALE = 0 | 灰度图 |
IMREAD_COLOR = 1 | 3 通道 BGR 模式 |
IMREAD_ANYDEPTH = 2 | 如果原图是 16 位或 32 位,直接读取,否则转换为 8 位图 |
IMREAD_ANYCOLOR = 4 | 根据文件格式读取为对应颜色模式的图像,任何支持的颜色模式均可 |
IMREAD_LOAD_GDAL = 8 | 使用 GDAL 读取 |
IMREAD_IGNORE_ORIENTATION = 128 | 忽略 EXIF 的旋转信息 |
IMREAD_REDUCED_COLOR_2 = 17 IMREAD_REDUCED_COLOR_4 = 33 IMREAD_REDUCED_COLOR_8 = 65 | BGR 模式,图像大小分别为原来的 1/2、1/4、1/8 |
IMREAD_REDUCED_GRAYSCALE_2 = 16 IMREAD_REDUCED_GRAYSCALE_4 = 32 IMREAD_REDUCED_GRAYSCALE_8 = 64 | 灰度模式,图像大小分别为原来的 1/2、1/4、1/8 |
2. 显示图像
使用 imshow 函数显示图像,第一个参数为窗口标题,第二个参数为图像:
import cv2
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
cv2.imshow('test', img)
cv2.waitKey(0)
注意:imshow
函数后必须加上 waitKey
函数否则会出现无响应。
waitKey()
函数的功能是不断刷新图像,参数为 delay
,单位是 ms,返回值为当前键盘按下的值,没有按键时返回-1。当 delay 为 0 时表示一直显示同一帧图像。
3. 保存图像
使用 imwrite
函数保存图像:
import cv2
img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE) # 以灰度方式读取
cv2.imshow('test', img) # 显示图像
cv2.waitKey(0)
cv2.imwrite('test_gray.jpg', img) # 保存图像
写图像同样有很多模式和参数,例如使用如下参数:
cv2.imwrite('test_gray.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 10])
JPG 质量为 10,可以看见明显的马赛克:
如果质量设置为 100,则更清晰:
其中 cv2.IMWRITE_JPEG_QUALITY
用于 jpg 质量控制,取值 0-100,值越大质量越好,默认为 95。另外还有如 cv2.IMWRITE_PNG_COMPRESSION
用于 png 质量控制,取值 0-9,值越大,压缩比越高,文件越小,质量越差,默认为 1。更多参数可参考 References 中的第 3 篇引用文档。
References
- OpenCV: Getting Started with Images
- OpenCV: Image file reading and writing - imread
- OpenCV: Image file reading and writing - imwrtie
- OpenCV: High-level GUI - imshow
- OpenCV: High-level GUI - waitKey
- OpenCV: Flags used for image file reading and writing
QQ交流群:点击链接加入群聊【Python练习生】532232743
我的知乎:AXin啊
公众号:请叫我AXin
以上是关于OpenCV学习笔记1基础:读取显示保存图像的主要内容,如果未能解决你的问题,请参考以下文章