opencv和matplotlib库图像读写显示对比和总结
Posted wojianxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv和matplotlib库图像读写显示对比和总结相关的知识,希望对你有一定的参考价值。
图片格式:
- bmp
- 全称:Bitmap
- 不压缩
- png
- 全称:Portable Network Graphics
- 无损压缩
- jpg
- 全称:Joint Photographic Experts Group
- 有损压缩
opencv(python)中图像读写显示:
import cv2 as cv
new_img = cv.imread(‘baby.png‘) # 文件大小:362KB
# bmp
cv.imwrite(‘img_bmp.bmp‘,new_img) # 文件大小:768KB
# jpg 默认95%质量
cv.imwrite(‘img_jpg95.jpg‘,new_img) # 文件大小:90.7KB
# jpg 20%质量
cv.imwrite(‘img_jpg20.jpg‘,new_img,[int(cv.IMWRITE_JPEG_QUALITY),20]) # 文件大小:13.2KB
# jpg 100%质量
cv.imwrite(‘img_jpg100.jpg‘,new_img,[int(cv.IMWRITE_JPEG_QUALITY),100]) # 文件大小:183KB
# png 默认1压缩比
cv.imwrite(‘img_png1.png‘,new_img) # 文件大小:431KB
# png 9压缩比
cv.imwrite(‘img_png9.png‘,new_img,[int(cv.IMWRITE_PNG_COMPRESSION),9]) # 文件大小:366KB
cv.imshow(‘result‘,new_img)
cv.waitKey(0)
cv.destroyAllWindows()
Matplotlib库中图像读写显示
Matplotlib是Python的一个很常用的绘图库。OpenCV中的图像是以BGR的通道顺序存储的,但Matplotlib是以RGB模式显示的,所以直接在Matplotlib中显示OpenCV图像会出现问题,因此需要转换一下。
# Writer : wojianxinygcl@163.com
# Date : 2020.3.27
import cv2 as cv
import matplotlib.pyplot as plt
# img = pli.imread(‘baby.png‘)
img = cv.imread(‘baby.png‘)
# 图像复制 + BGR->RGB
img2 = img[:, :, ::-1]
# or
# img2 = cv.cvtColor(img, cv.COLOR_BGR2RGB)
plt.figure(1)
# 显示不正确的图
plt.subplot(121)
plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
plt.axis(‘off‘) # 去图像边框
plt.title(‘False Channel Show‘)
plt.imshow(img)
# 显示正确的图
plt.subplot(122)
plt.xticks([]), plt.yticks([]) # 隐藏x和y轴
plt.axis(‘off‘) # 去图像边框
plt.title(‘Right Channel Show‘)
plt.imshow(img2)
plt.savefig(‘baby_true.jpg‘) # 在show前面保存图像
plt.show()
实验输出:
以上是关于opencv和matplotlib库图像读写显示对比和总结的主要内容,如果未能解决你的问题,请参考以下文章
python OpenCV 使用matplotlib显示图像