wangdaren 2020-03-27
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是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()