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が作動した。

CacooのAWS構成図自動生成機能を試す

Visioの代わりに使っている設計用の作画サービス「Cacoo」でAWSの構成図Export機能が追加された。

https://cacoo.com/ja/blog/aws-architecture-import/

紹介記事の手順ではアクセスキーを登録するリスクが心配ですが、サポートページではクロスアカウントのIAMロールで登録する方法が掲載されているので、後者を参考にすると良いです。

https://support.cacoo.com/hc/ja/articles/360010495594-AWS%E6%A7%8B%E6%88%90%E5%9B%B3

AWS構成図の対象

  • CloudFront+ELB(ALB)AutoScaling+EC21台(待機2台)+RDS+その他一般的なCloudWatch,SNSあり
    (※ARNやVPC名等は消去しています)

利用した感想

  • AWS構成図の自動生成で有名な「CloudCraft」と比べると、出力結果が物足りない(見た目とサービス間の情報が貧弱)
  • 競合の「CloudCraft」「lucidchart」と比べると、コストパフォーマンスが最も良い。
  • ELB/ALBに登録されているAutoScalingの情報が出力されない(競合のlucidchartは出力される)
  • CloudFrontとALBの連携が出力されない(図から省略したがCloudFrontとS3 web frontの連携は出力される)
  • CloudWatchの情報が出力されない(競合のlucidchartはCloudWatchのアラート登録が出力される)
  • DynamoDBの情報が出力されないが、構成図の出力に対応してほしい(競合のlucidchart Basicも同様に出力されない)
  • Lambdaの情報が出力されない(ALBにもマウントできるので、できれば出力してほしい)
  • S3とSNSはバケットとCloudWatchの名称だけが表示される
  • 可能であれば、ELBやCloudfrontに登録されているRoute53, Config, セキュリティグループあたりの情報もほしい
  • 未検証だが「CloudMapper」というAWSの構成図を出力できるOSSがある。
    https://github.com/duo-labs/cloudmapper
    出力結果がCLoudformationで提供されているエディタに類似していて、商用サービスよりも強力かもれない。

AWS構成図の生成はCloudCraftが有名でしたが、低価格のサービスで提供されるようになったのは嬉しいところです。