私は Web カメラへのリアルタイム アクセスを必要とするプロジェクトに取り組んでおり、OpenCV でフレームを処理するために Windows 10 で適切なカメラ ストリームを取得する際に問題があります。
Windows 8.1 で問題なくカメラにアクセスできます。どちらかを使用して
- OpenCV 2.4.9 と Evgeny Pereguda の VideoInput ライブラリ ( http://www.codeproject.com/Articles/776058/Capturing-Live-video-from-Web-camera-on-Windows-an ) (Windows Media Foundation を介してカメラにアクセスするため) 、 また
- 追加ライブラリなしの OpenCV 3.0
これらにより、高フレーム レート (~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 の更新されたドライバーを見つけようとしましたが、役に立ちませんでした。
誰かが同様の問題を抱えていましたか?私が見落としている明らかな解決策はありますか?