オブジェクト検出のチュートリアル コードを実行しようとしました。Logitech c170 ウェブカメラを持っています。このカメラが接続されていると、チュートリアル コードを実行できません。
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP --(!) No captured frame -- Break!
しかし、同じプログラムが内蔵のウェブカメラで効果的に実行されます。私はopenCVの初心者なので、間違いを理解できません。
使用して両方のカム(組み込みおよびロジクールc170)の詳細を取得したとき
v4l2-ctl --device=/dev/video0 --all
ドライバー情報 (libv4l2 を使用しない場合): ドライバー名: uvcvideo カード タイプ: Webcam C170 バス情報: usb-0000:00:1d.0-1.2 ドライバー バージョン: 3.2.50 機能: 0x04000001 ビデオ キャプチャ ストリーミング フォーマット ビデオ キャプチャ: 幅/高さ: 640/480 ピクセル形式 : 'MJPG' フィールド : なし 1 行あたりのバイト数: 0 サイズ イメージ : 921600 色空間 : SRGB クロップ機能 ビデオ キャプチャ : 境界 : 左 0、上 0、幅 640、高さ 480 デフォルト : 左 0、上 0 、幅 640、高さ 480 ピクセル アスペクト: 1/1 ビデオ入力: 0 (カメラ 1: OK) ストリーミング パラメータ ビデオ キャプチャ: 機能: timeperframe 1 秒あたりのフレーム数: 30.000 (30/1) 読み取りバッファ: 0
両方のピクセル形式が異なるという違いがありました。内蔵カムは YUYV ですが、ロジクールは MJPG です。さらに、私はMJPG形式を完全に認識していません..使用して形式をYUYVに変更しようとしました
v4l2-ctl --device=/dev/video1 --set-fmt-video=width=640,height=480,pixelformat=0
フォーマットを変更できますが、プログラムを再度実行すると、エラーが繰り返され、システムによってフォーマットが再び MJPG に変更されます。
私をOpenCVの最小の男だと考えてください..