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
- https://pypi.org/project/opencv-python/
- https://answers.opencv.org/question/220567/how-to-install-opencv_python-to-read-jpeg2000-files/