Я использую веб-камеру с поддержкой 1280 x 720 при 60 кадров в секунду.Как установить fps камеры в opencv?
Мой компьютер окружение Intel i5-4690K и Windows7, Visual Studio 2015, OpenCV 3,1
При запуске веб-камеры в Kinovea (0.85.15, https://www.kinovea.org/), камера запуска в 1280 х 720 @ 60fps ,
Но, в Visual studio с Opencv, это не работает @ 60 кадров в секунду.
Он просто работает только 12 ~ 15 fps.
Мой код для проверки камеры fps приведен ниже.
#include <stack>
#include <iostream>
#include <math.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include <opencv2/video.hpp>
#include "opencv2/imgcodecs.hpp"
#include <time.h>
using namespace cv;
using namespace std;
int keyboard;
int main(int argc, char** argv)
{
VideoCapture cap(0); //capture the video from web cam
if (!cap.isOpened()) // if not success, exit program
{
cout << "Cannot open the web cam" << endl;
return -1;
}
cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);
while ((char)keyboard != 'q' && (char)keyboard != 27)
{
Mat imgOriginal;
Mat ROOI;
clock_t a = clock();
bool bSuccess = cap.read(imgOriginal);
if (!bSuccess)
{
cout << "Cannot read a frame from video stream" << endl;
break;
}
printf("Captue Time : %f\n", double(clock() - a)/double(CLOCKS_PER_SEC));
imshow("Original", imgOriginal);
if (waitKey(1) == 27)
{
cout << "esc key is pressed by user" << endl;
break;
}
}
return 0;
}
В приведенном выше коде. Я проверяю «Время захвата», и обычно это записи 0,07 с ~ 0,09 с.
Итак, я пытаюсь выполнить VideoCapture :: set (CV_CAP_PROP_FPS, 60), но это не работает. (Когда я получаю FPS, используя код VideoCapture :: get (CV_CAP_PROP_FPS), он возвращает значение 0.)
Как я могу управлять веб-камерой FPS?
Спасибо.
Вы видели эту тему? (http://stackoverflow.com/questions/19662193/opencv-videocapturegetcv-cap-prop-fps-returns-0-fps) - веб-камеры обычно имеют фиксированную частоту кадров, которая не может быть изменена. – Dai
@ Дай Спасибо за ваш ответ. Но я не могу понять, как работает 60 кадров в секунду в программе Kinovea, если веб-камеры имеют фиксированную частоту кадров. В чем разница между Kinovea и opencv? Благодарю. –
Сильно зависит от того, поддерживает ли камера различные уровни ввода. Я могу привести пример использования OpenCV + OpenNI для установки VideeCapture (работа с Kinect): 'modeRes = m_capture.set (CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE, X);', где 'X' в этом случае является одним из:' {CAP_OPENNI_VGA_30HZ, CAP_OPENNI_SXGA_15HZ , CAP_OPENNI_SXGA_30HZ} '. Я полагаю, OpenNI кодирует его в пределах разрешения. – hauron