Jetson Nanoで GPU 有効化されたOpenCVを野良ビルドしたら
cap = cv2.VideoCapture(input_video,
みたいな処理で
[ERROR:0] global /home/jetson/opencv/modules/videoio/src/cap.cpp (116) open VIDEOIO(GSTREAMER): raised OpenCV exception:
OpenCV(4.1.1) /home/jetson/opencv/modules/videoio/src/cap_gstreamer.cpp:144: error: (-215:Assertion failed) ptr in function 'get'
というエラーでコケる。
原因は GStreamerが有効化されると OpenCVのフラグ構成上
cv::CAP_GSTREAMER = 1800,
cv::CAP_FFMPEG = 1900,
GSTREAMER(数値が低いほう)が優先順位が高いらしい。
じゃー、どうしたら OpenCVのバックエンド切り替えられるのかというと
cap = cv2.VideoCapture(input_video, apiPreference=cv2.CAP_FFMPEG)
とVideoCaptureに apiPreferenceを指定せよとのこと。
0 件のコメント:
コメントを投稿