OpenCVでWebカメラの解像度を変更すると落ちる不具合の対処方法

所有しているPCを買い替えたところ、OpenCVを利用したアプリが動かなくなった。

 

■アプリ(OpenCV)から見た症状

・動作環境はWindows10、OpenCVのバージョンは3.4.5
・RealSense D435カメラだとOpenCVの機能は正常に稼働する
・新しいPCに内蔵されたWebカメラだと、OpenCVからカメラを呼び出した瞬間に例外終了する
・Webカメラ単体であれば問題なく動作する(OpenCVから呼び出さなければ正常動作)
・OpenCVは最新版3.4.5をリファレンス通りにビルドして利用している

 

■原因の推測

OpenCVからWebカメラを呼び出すときに、カメラ解像度を設定変更するためにWITH_V4Lを参照するが、WITH_V4Lを参照できずに落ちてしまう。

 

■対策

ビルドオプションのWITH_V4LをONにすればカメラ解像度の変更でWITH_V4Lを参照したときの不具合が解消するらしい。
該当するOpenCVのソースコード、platforms/js/build_js.py 107行に定義されている値を変更。

変更前
"-DWITH_V4L=OFF",

変更後
"-DWITH_V4L=ON",

 

■結果

WITH_V4Lオプションを変更してcmakeを実行し、VisualStudioでリビルド、OpenCVライブラリを差し替えると新しいWebカメラでも正常にOpenCVが作動した。

 

the notebook PC

hidenori

コンテンツのフロント・バックエンドになる技術、自動化・ロボット化・RPA、機械学習、Web、モバイル関連、ローカライズ、コンシューマゲーム、モバイルコンテンツ開発。事業開発の設計から業務効率化まで対応しています。 開発系 .net / mono / .net core, c++, c, Ruby, Phython, RPA自動化構築、VTuber構築、WebRTCバックエンド構築 いろいろやってます

2 thoughts to “OpenCVでWebカメラの解像度を変更すると落ちる不具合の対処方法”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です