1

私は Web カメラへのリアルタイム アクセスを必要とするプロジェクトに取り組んでおり、OpenCV でフレームを処理するために Windows 10 で適切なカメラ ストリームを取得する際に問題があります。

Windows 8.1 で問題なくカメラにアクセスできます。どちらかを使用して

これらにより、高フレーム レート (~30fps) で Web カメラ ストリームをキャプチャし、Web カメラの解像度を次のように設定できます。

cvCapture.set(CV_CAP_PROP_FRAME_WIDTH, 640);

cvCapture.set(CV_CAP_PROP_FRAME_HEIGHT, 480);

ただし、Windows 10 では、上記の両方のソリューションで問題が発生します。

  • OpenCV 2.4.9 を使用したソリューションと VideoInput ライブラリを使用すると、解像度を 640x480 に設定できますが、フレーム レートは約 1FPS (またはそれより悪い?!) であり、画像は非常に暗いです。
  • OpenCV 3.0 を使用したソリューションでは、良好なフレーム レートで 1920x1080 の優れた画像が得られますが、ストリームの解像度を設定できません。

私はカメラストリームを開こうとさえしました:

cv::VideoCapture cvCapture( CV_CAP_DSHOW + camnum );

cv::VideoCapture cvCapture ( CV_CAP_MSMF + camnum );

最初のものは機能します (ストリームを開く限り、ただし上記と同じ問題があります)。MSMF (Microsoft Media Foundation) は cvCapture.isOpened() が false を返す結果になります。

FullHD ストリームをリアルタイムで処理することは、画像処理アルゴリズムにとって実行可能ではなく、OpenCV を使用して結果のフレームのサイズを縮小することもできません。

Windows 8.1 バージョンは Surface Pro 3 (Core i7) で実行され、Windows 10 バージョンは Surface Pro 4 (Core i7) で実行されます。これはハードウェア/カメラ ドライバーの問題でしょうか? Surface 4 の更新されたドライバーを見つけようとしましたが、役に立ちませんでした。

誰かが同様の問題を抱えていましたか?私が見落としている明らかな解決策はありますか?

4

1 に答える 1

1

Windows 10 での videoInput に関する問題は、Web カメラの正しい mediaType の選択に関連していると思います。実際、OpenCV はデフォルトで DirectShow を使用し、Media Foundation の videoInput はオプションにすぎません。チェック変数を修正することをお勧めします。

float MF_MT_FRAME_RATE_RANGE_MAX;
float MF_MT_FRAME_RATE;
float MF_MT_FRAME_RATE_RANGE_MIN;

// Structure of info MediaType 
struct MediaType

また、サイトのCapture Manager Topology Editorにアクセスすることをお勧めします。これは、Media Foundation を介して Web カメラを操作するためのフリー ソフトウェアです。Surface Pro 4 (Core i7) で Media Foundation のアクセス可能な機能を確認できます。

エフゲニー・ペレグダ

于 2016-03-15T10:54:44.260 に答える