s1091409 作業6

  一.作業說明 :

請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率 (compression ratio)。


二.開發環境 : 

  • 作業系統:    Windows11 
  • 編譯器:     Visual Studio Code (虛擬環境)
  • 程式語言:    Python 3.10.10
  • OpenCV版本:   4.7.0.72

  • Numpy版本:   1.24.2

  三.程式說明 :

壓縮:

    1. 讀取圖片 cv2.imread
    2. 獲取圖片的shape
    
    3. 將圖片的BGR像素質轉成一維陣列
    4. 用迴圈輪遍陣列,如果相同count++,除此之外將上個數量以及數值存入陣列
    
    5. 將shape, 三個BGR值寫入txt檔
    6. 用os.path.getsize獲取圖檔,txt檔案大小,相除獲得壓縮比
    7. 將三個數值以及平均寫入txt    
    

解壓縮:

    1. 讀取txt
    2. 讀取shape
    3. 讀取BGR list
    
    4. 根據壓縮方法反著做,讀取第一數值為數量,第二數值為pix值,做迴圈獲取BGR的list
    5. 用轉換成np.array用reshape(shape)將一維轉二維,再用cv2.merge將三陣列轉成一張圖
    6. 輸出圖像

  四.成品 :

    img1:
    
    img2:

    img3:

decompress img1:

decompress img2:

decompress img3:


留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7