openCVを使用してLogitechC300Webカメラから単一フレームを取得したいと思います。以下のコードを使用する場合。画像は保存されますが、約50%の場合、エラーが含まれています(画像を参照)。
私は今何時間も検索していますが、何が原因かわからないため、どのキーワードが検索に役立つかわかりません。私にとっては、カメラがまだフレームを更新している間にWebカメラからの画像が読み取られているように見えます(ただし、これは単なる推測です)。標準オプションで同じ問題(ただし頻度は少ない)を生成するuvccaptureをテストしましたが、-mオプションを使用すると問題なく動作します。マンページによると、「キャプチャモードをYUYVキャプチャに切り替えます」です。
だから私の質問は、openCVでもこのモードを使用する方法はありますか?v4l2を直接使用することは避けたいと思います。
VideoCapture cap(0);
if(!cap.isOpened())
cout << "Opening video device failed" << endl;
cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1024);
Mat frame;
for(int i = 0; i<50; i++)
{
stringstream str;
str << "/home/ubuntu/image" << i<< ".jpg";
cap >> frame;
imwrite(str.str(), frame);
cout << i << endl;
}
return 0;