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
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:
留言
張貼留言