Skip to content

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

Last Updated on 2021-07-21 by Clay

什麼是 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