【Python】openCVのcv2.imshow()でエラー error: (-215) size.width>0 && size.height>0 in function cv::imshow
動画を読み込んで表示するプログラムでエラーが発生。
import cv2 src_m = cv2.VideoCapture("ファイル名") r, f = src_m.read() #←1フレーム読み込み cv2.imshow('title', f) #←フレーム表示
aviファイルはエラーが出ずに表示できるものとできない物があった。
エラーが出なかったものも画像が斜めに変形して表示されおかしい状態。
mp4, tsは読み込み出来ずだった。
エラーメッセージは
error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow
原因は"import cv2"でインポートされるモジュール cv2.pyd が
何故かc:\Python\DLLs 内に単独であって
本来インポートされるべき
C:\Python27\Lib\site-packages 内の cv2.pyd が読み込まれていなかった。
たぶんインポートの順番かPYTHONPATHの記述の順番のせいか?
これはcv2をインストールし直した時のバージョンと
インポートして cv2.__version__ で確認したバージョンが一致しなかったことから判明。
このエラーは cv2.pyd と同じディレクトリにopencv_ffmpegという恐らく
デコード担当のファイルがない時に出るらしく今回はまさにそれだったと思われる。
opencv_ffmpegが同じディレクトリに必要というのは下記にあった。
stackoverflow.com