s1091403 作業6
主題: Run-Length Based Image Compression 練習
作業說明:
請設計一個基於 Run-Length 的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。 部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率。
(平均壓縮率)
(壓縮檔)
開發環境:
Windows10
Anaconda
3(22.9.0)
Spyder
5.4.1
Python 3.9
Opencv(4.7.0)
Numpy(1.24.2)
程式片段(程式碼截圖在readme中):
使用cv2.imread()輸入照片,接著進入Compression函式進行壓縮以及儲存壓縮檔。
Compression:
首先先透過cv2.split()取得三種顏色分別的數值(b,g,r),使用np.array()將其轉成array型態(np_b,np_g,np_r)並透過flitten()變成一維陣列(flt_b,flt_g,flt_r),接著分別進入run_length函式取得壓縮過後的array(res_b,res_g,res_r),再將其組合在一起(reslut)並儲存成txt檔。
run_length:
使用res儲存結果,先取得第一個數字存於temp中,透過count計算讀入該數字的數量,接下來每次讀入一個數字,若是與temp相同則count加一,若不同則把[count,temp]放入res中,temp變成當下的數字,count恢復成1。
取得壓縮前後檔案大小並進入pr()函式中計算壓縮率並印出來,最後在計算平均壓縮率。
pr:
計算並印出及回傳壓縮率。
Demo影片: https://youtu.be/gDrkBWjGMrY
留言
張貼留言