圖片格式:
- 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()