Skip to content

[Python] 使用 OpenCV 轉換 JP2 格式的圖片成 PNG、JPEG

什麼是 JPEG 2000

JPEG 2000、也就是本文標題的 JP2,是一種圖片檔案的格式,副檔名即為 .jp2。基本上,JP2 的『壓縮比』比一般熟悉的 JPEG 來得更好。

不過截止至目前為止,大多主流的瀏覽器尚不太支援這種格式,一般的作業系統也難以將這種格式的圖片打開 —— 這是由於 JPEG 在編碼解碼上存在著專利問題的緣故。


如何轉換 JP2 圖檔

不過,若是我們想要轉換 JP2 格式的檔案也並非毫無辦法。目前我試過比較可靠的方法是通過 OpenCV 去轉換檔案格式,以下就使用 Python 程式來示範。

不過首先要確認的是 Python 環境裡面是不是有 OpenCV。如果環境裡沒有,需要先使用以下指令安裝:

pip3 install opencv-python

安裝好之後,便來看段簡單的範例程式碼。

# coding: utf-8
import cv2


# Convert
image = cv2.imread('test.jp2')
cv2.imwrite('test.png', image)



使用 imread() 讀進圖片、再使用 imwrite() 儲存不同格式的圖片,這樣一來就成功了,非常簡單。

不過,若是在 imread() 的時候發生以下錯誤:

cv2.error: OpenCV(4.2.0) 
/io/opencv/modules/imgcodecs/src/grfmt_jpeg2000.cpp:
104: error: (-213:The function/feature is not
implemented) imgcodecs: Jasper (JPEG-2000) codec is
disabled. You can enable it via 'OPENCV_IO_ENABLE_JASPER'
option. Refer for details and cautions here:
https://github.com/opencv/opencv/issues/14058 in function
'initJasper'

則我們需要加入環境變數:

export OPENCV_IO_ENABLE_JASPER=true

或是在 Python 程式碼開頭加入:

os.environ['OPENCV_IO_ENABLE_JASPER'] = 'true'



這樣一來程式碼才能正常運作。


Reference


Read More

Leave a Reply