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 : # 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()
实验输出:
相关推荐
meylovezn 2020-09-15
wordmhg 2020-07-28
syThinkCool 2020-07-16
adamlovejw 2020-06-20
woxmh 2020-06-03
maybeyoucan 2020-05-17
jiahaohappy 2020-05-11
laohyx 2020-05-07
Tonybo 2020-04-27
liusarazhang 2020-04-10
tengyunjiawucom 2020-03-27
Leonwey 2020-03-03
xinhao 2020-02-18
Jonderwu 2020-02-10
数据齿轮 2020-01-31
FrederickBala 2020-01-29
Laozizuiku 2020-01-13
Winterto0 2020-01-12