Мне нужно взять один кадр для второго с OpenCV. Проблема заключается в том, что VideoCapture :: get (CV_CAP_PROP_FPS); всегда возвращает 0. И если я попытаюсь установить желаемые fps с помощью VideoCapture :: set ничего не изменится.Как захватить видео с OpenCV в C++ с нужным fps
Это мой код:
VideoCapture cap(0);
if (!cap.isOpened()) {
cout << "Cannot open the video cam" << endl;
return -1;
}
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH);
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT);
double fps = 1;
cap.set(CV_CAP_PROP_FPS, fps);
cout << "FPS : " << fps << endl;
cout << "Frame size : " << dWidth << " x " << dHeight << endl;
namedWindow("CAPTURE EXPRESSION",CV_WINDOW_AUTOSIZE);
while (1) {
Mat frame;
bool bSuccess = cap.read(frame);
if (!bSuccess) {
cout << "Cannot read a frame from video stream" << endl;
break;
}
fps = cap.get(CV_CAP_PROP_FPS);
imshow("MyVideo", frame);
cout << "FPS : " << fps << endl;
if (waitKey(30) == 27) {
cout << "esc key is pressed by user" << endl;
break;
}
}
P.S. я использую OpenCV 2.4.9 с Mac OS и со встроенной камерой MacBook
поток веб-камеры от VideoCapture не имеет fps. (вы не можете ни установить, ни получить). все, что вы можете сделать, это измерить время самостоятельно и установить тайм-аут в waitKey() – berak
и с внешней камерой? – luke88
^^ нет, такой же проблема. просто используйте waitKey (1000); и вы получите около 1fps. – berak