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 = 13 通道 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

  1. OpenCV: Getting Started with Images
  2. OpenCV: Image file reading and writing - imread
  3. OpenCV: Image file reading and writing - imwrtie
  4. OpenCV: High-level GUI - imshow
  5. OpenCV: High-level GUI - waitKey
  6. OpenCV: Flags used for image file reading and writing

QQ交流群:点击链接加入群聊【Python练习生】532232743
我的知乎:AXin啊
公众号:请叫我AXin

以上是关于OpenCV学习笔记1基础:读取显示保存图像的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV学习笔记1基础:读取显示保存图像

OpenCV学习笔记1基础:读取显示保存图像

OpenCV学习笔记2基础:读取播放保存视频

OpenCV学习笔记2基础:读取播放保存视频

OpenCV学习笔记2基础:读取播放保存视频

OpenCV学习笔记2基础:读取播放保存视频