#pythonのOpenCVを用いてjp2画像を表示したいです
OpenCVでjp2の画像を表示しようとするとエラーになります。
jpegなどは読み取れるようです。
なぜなのか教えていただきたいです。
#発生している問題・エラーメッセージ
python3
1imread_('S2A_MSIL2A_20190504T014701_N0211_R017_T53SLV_20190504T043621.SAFE/GRANULE/L2A_T53SLV_A020177_20190504T014655/IMG_DATA/R10m/T53SLV_20190504T014701_B04_10m.jp2'): can't read header: OpenCV(4.2.0) /io/opencv/modules/imgcodecs/src/grfmt_jpeg2000.cpp:196: error: (-215:Assertion failed) depth == 8 || depth == 16 in function 'readHeader' 2 3Traceback (most recent call last): 4 File "chap5.py", line 16, in <module> 5 cv2.imshow("MAP", img) 6cv2.error: OpenCV(4.2.0) /io/opencv/modules/highgui/src/window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow' 7
#該当のソースコード
python3
1import numpy as np 2import os 3import cv2 4 5os.environ["OPENCV_IO_ENABLE_JASPER"] = "True" 6 7#絶対パス 8path_b4 = ('S2A_MSIL2A_20190504T014701_N0211_R017_T53SLV_20190504T043621.SAFE/GRANULE/L2A_T53SLV_A020177_20190504T014655/IMG_DATA/R10m/T53SLV_20190504T014701_B04_10m.jp2') 9 10#jp2画像を読み込む 11img = cv2.imread(path_b4, cv2.IMREAD_COLOR) 12 13#ウィンドウに表示 14cv2.imshow("MAP", img) 15 16#終了処理 17cv2.waitKey(0) 18cv2.destroyAllWindows()
#試したこと
jpegやpngファイルで試してみたところ画像が表示されました。
また別の開き方では画像が開けたのでjp2画像自体は問題ないと思われます。
以下にjp2を開くことのできたコードを示します。
python3
1import os 2import matplotlib.pyplot as plt 3import numpy as np 4from PIL import Image 5 6#絶対パス 7path_b4 = ('S2A_MSIL2A_20190504T014701_N0211_R017_T53SLV_20190504T043621.SAFE/GRANULE/L2A_T53SLV_A020177_20190504T014655/IMG_DATA/R10m/T53SLV_20190504T014701_B04_10m.jp2') 8 9#jp2画像の読み込み 10im = Image.open(path_b4) 11 12#画像を配列に変換 13im_list = np.array(im) 14 15#コンター図作成 16plt.imshow(im_list, cmap="jet") 17plt.colorbar () 18plt.xlabel('X') 19plt.ylabel('Y') 20plt.show()
#補足情報(FW/ツールのバージョンなど)
jp2の画像が必要なのでフォーマットの変換なしでの方法を知りたいです。
ubntuでプログラムを動かしています。
jp2画像は(10980, 10980)の大きさです。
あなたの回答
tips
プレビュー