OpenCV实现图像的读取、显示、存储

发布时间:2024年01月17日

OpenCV实现图像的读取、显示、存储

图像的基本操作如读取、显示、存储,通过调用opencv中的cv2.imread()、cv2.imshow()、cv2.imwrite()

先导入需要学习需要用到的几个库

import cv2
import numpy as np
import matplotlib.pyplot as plt

一定要注意通过opencv读取到的图像格式是BGR,而其他所有图像库读入彩色图片都是以主流的RGB格式存储,且**cv2.imshow()函数也是按照BGR格式来显示图像**

还要注意除了PIL库读入的图片是img类之外,其他库读入的图片都是numpy矩阵,且在各大图像库中,opencv的性能是最好的

下面是图像的读取与显示操作

img_BGR = cv2.imread('./img.jpg')
cv2.imshow('img_bgr', img_BGR)
cv2.waitKey()
cv2.destroyAllWindows()               # 在运行cv2.imshow后,需要使用cv2.waitKey来保持窗口的显示

如果想从BGR转成RGB格式可以这么转

img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)
plt.imshow(img_RGB)              # plt.show()显示图像是根据RGB格式显示,所以使用plt.show()而不使用cv2.imshow()

手动实现可以参考如下代码

h, w, c = img_BGR.shape
img_RGB = np.zeros([h, w, c], img_BGR.dtype)
img_RGB[:, :, 0] = img_BGR[:, :, 2]
img_RGB[:, :, 1] = img_BGR[:, :, 1]
img_RGB[:, :, 2] = img_BGR[:, :, 0]
plt.imshow(img_RGB)

以上三段代码都会显示同一幅图像(注意上面是在Jupyter中逐一运行)
请添加图片描述

接下来是图片的存储。函数 cv2.imwrite() 用于将图像保存到指定的文件。

此函数的参数为 cv2.imwrite(filename, img, [paras])

参数说明

  • filename:要保存的文件的路径和名称,包括文件扩展名
  • img:要保存的 OpenCV 图像,nparray 多维数组
  • paras:不同编码格式的参数,可选项
    • cv2.CV_IMWRITE_JPEG_QUALITY:设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95),数值越大则图片质量越高;
    • cv2.CV_IMWRITE_WEBP_QUALITY:设置 .webp 格式的图片质量,取值为 0-100;
    • cv2.CV_IMWRITE_PNG_COMPRESSION:设置 .png 格式图片的压缩比,取值为 0-9(默认值 3),数值越大则压缩比越大。

一般只需要设置前两个参数就行,此函数保存的是numpy数组,且还要注意保存文件的格式是根据filename的扩展名决定的,与读取的图像文件的格式无关。

cv2.imwrite('./write.jpg', img_BGR)

执行上面代码后,文件目录就会生成名为write的jpg格式图像
请添加图片描述

文章来源:https://blog.csdn.net/m0_63951116/article/details/135638600
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。