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

the notebook PC

所有している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