<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    圖片保存

    概要

    在之前的HighGUI展示圖片的課程中, 阿凱沒有講解圖像保存的問題. 圖像的保存, 我們需要使用imwrite 函數.

    阿凱給大家講解了如何保存jpg格式與png格式的圖片, 以及他們的壓縮質量/壓縮等級的設定.

    keywords imwrite 保存圖像 highgui

    圖像的簡單保存

    這次我們讀入的還是小貓. &:-)老面孔

    0119_cat.jpg

    我們在讀入img之后, 對圖像進行各種操作, 例如圖像均衡, 圖像繪制等.

    接下來, 直接使用imwrite 函數, 第一個參數./cat2.png 是即將保存的文件路徑與文件名. 因為我在Ubuntu下, 所以文件路徑會使用斜杠 /, 函數的第二個參數就是圖像矩陣img.

    image_save_as_png.py

    import numpy as np
    import cv2
    
    # 導入一張圖像 模式為彩色圖片
    img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)
    
    # 讀入灰度圖
    cv2.imwrite('cat2.png', img)
    

    具體保存為什么圖像格式, 是根據圖像路徑名字的后綴去判斷的, 后綴為.png 就保存為png 格式的圖片.

    哈哈, 阿凱猜到你已經會保存JPEG 格式的圖片啦.

    知識充電站: jpg 跟 jpeg其實是一個東西, jpg是jpeg的簡稱. jpeg是Joint Photographic Experts Group(聯合圖像專家小組)的縮寫

    image_save_as_jpg.py

    import numpy as np
    import cv2
    
    # 導入一張圖像 模式為彩色圖片
    img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)
    
    # 保存為PNG圖片
    cv2.imwrite('./cat3.jpg', img)
    

    關于 JPEG, PNG等格式之間圖片的差異, 可以查閱知乎文章 jpg和png有什么區別?

    圖像的壓縮保存

    圖像的保真度, 靠imwrite函數的第三個參數來指定.

    第三個參數, 針對不同的圖片保存類型, 對應的含義也有所不同.

    在圖像壓縮的演示里, 我們采用棕熊的圖片.

    bear

    JPEG壓縮保存

    JPEG 的第三個參數所代表的意思是圖像質量cv2.IMWRITE_JPEG_QUALITY, 取值范圍在 0-100, 默認是95.

    cv2.imwrite('bear_quality_50.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])
    

    我們將質量度分成10段 展示一下各種質量度下的圖片.

    image_write_to_jpg_quality.py

    import numpy as np
    import cv2
    
    # 導入一張圖像 模式為彩色圖片
    img = cv2.imread('bear.jpg', cv2.IMREAD_COLOR)
    
    
    for quality in range(0, 100, 10):
    
        # 保存為PNG圖片
        cv2.imwrite('bear_quality_{}.jpg'.format(quality), img, [cv2.IMWRITE_JPEG_QUALITY, quality])
    

    Screenshot_20180121_220953.png

    圖像大小對比.

    Screenshot_20180121_221320.png

    PNG壓縮保存

    PNG對應的稱之為壓縮級別 cv2.IMWRITE_PNG_COMPRESSION

    壓縮級別的取值范圍從0到9. 0 代表無壓縮, 9代表最大壓縮.

    例如我們使用壓縮級別4去存儲圖片, 就可以這么寫.

    cv2.imwrite('bear_compression_4.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 4])
    

    阿凱寫個程序, 讓大家直觀的感受到不同壓縮級別的效果.

    image_write_to_png_compression.py

    import numpy as np
    import cv2
    
    # 導入一張圖像 模式為彩色圖片
    img = cv2.imread('bear.png')
    
    
    for cmpi in range(0, 10):
        # 保存為PNG圖片
        cv2.imwrite('bear_compression_{}.png'.format(cmpi), img, [cv2.IMWRITE_PNG_COMPRESSION, cmpi])
        print("壓縮級別 {}".format(cmpi))
    

    Screenshot_20180121_213701.png

    說實話,打開圖片看清晰度, 我們肉眼非常難看到有啥區別,不過我們可以通過文件屬性文件大小來體現出來.

    Screenshot_20180121_214659.png


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人