0

オブジェクト検出のチュートリアル コードを実行しようとしました。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の最小の男だと考えてください..

4

1 に答える 1

0

Logitech C170 を V4L2 API で数日間使用しようとしましたが、640x480 または 640x360 の解像度で YUYV の非圧縮画像をキャプチャできないようです。フレーム バッファがいっぱいになるのを待つと、V4L2 が停止します。

ただし、UVC 機能で報告されている他のすべての解像度 (352x288、320x240、176x144、160x120、544x288、432x240、320x176 など) ではうまく機能します。

解像度 640x480 の場合、カメラから JFIF 圧縮フレームのみをダンプできました。

640 ピクセル未満の画像幅を試してみると、コードがこのカメラで機能する可能性があります。

于 2014-07-20T13:11:04.563 に答える