0. エラー内容
100k
×100k
の解像度(ピクセル)を有する画像をOpenCVで読み込ませようとしたところ次のようなエラーが発生した。
cv2.error: OpenCV(4.4.0) ../modules/imgcodecs/src/loadsave.cpp:77: error: (-215:Assertion failed) pixels <= CV_IO_MAX_IMAGE_PIXELS in function 'validateInputImageSize'
どうやら、初期設定だと大きな画像は読み込めないようになっているようである。
LimitationはCV_IO_MAX_IMAGE_PIXELS
で設定されており、
このLimitationはソースコードのDEFINEからでも、OSの環境変数からでも設定できるようである。
1. 解決方法
取り合えず、環境変数が楽そうなので、こちらで設定する。
$ export OPENCV_IO_MAX_IMAGE_PIXELS=1099511627776
気を付けるべきポイントはエラーではCV_IO_MAX_IMAGE_PIXELS
と書いてあるが、
OSの環境変数ではOPENCV_IO_MAX_IMAGE_PIXELS
に対して値を設定することである。
今回ピクセル数上限は1<<40=1099511627776
を設定してある。
また、opencv 4.4.0
以降ならこの方法は上手くいくようであるが、
opencv 3.5.0
等では定数が直接畳み込まれており、環境変数を参照しにいかないので、同様の方法は使えない。
conda
でパッケージを管理している場合は以下でアップデートしよう。
$ conda install -c conda-forge opencv=4.4.0