1. 作業說明:
請設計一個基於Run-Length的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。
部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。
2. 作業環境、語言:
- Windows 10
- Python 3.8.10
- OpenCV 4.5.1
- Visual Studio Code
3. 實作:
Encode:
1.使用cv2.imread讀bmp檔,放入img
2.接著使用img陣列個別取出R,G,B
3.對R,G,B個別使用RLE方式壓縮,(將連續的數字壓縮成一個)
4.將RGB的結果寫入.3312檔案
Decode:
1.使用readline將height,weight,RGB資訊讀出來存入變數
2.將之前的壓縮資料展開(看一個數字有幾個用for loop展開),接著存入變數
3.使用np.array轉為numpy格式
4.接著將三個組合再一起,在使用cv2.imwrite寫入bmp檔,就會形成原本的bmp圖
3. 執行結果:
img1壓縮率:(7.74/13.9)*100%=55.68%
img1壓縮還原圖:
img2壓縮率:(13.1/13.9)*100%=94.24%
沒有留言:
張貼留言