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()

实验输出:

上面这段代码输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值