Драйвер камеры доступа Logitech C270 из OpenCV в C++
Есть ли способ доступа к драйверу камеры из OpenCV, чтобы отключить оптимизацию изображения?
Когда я начал играть с камерой, я написал простое приложение для измерения скорости FPS, но я получал только 15 кадров вместо 30 FPS с разрешением 640x480, как указано в технических характеристиках камеры.
Я провел некоторое исследование и обнаружил, что могу отключить функцию "RightLight" на "программном обеспечении веб-камеры Logitech" (дополнительное программное обеспечение с веб-сайта Logitech). Я сделал это и получил 30 кадров.
Я хотел бы программно убедиться, что функция "RightLight" отключена при запуске приложения без использования дополнительного программного обеспечения. Есть ли способ сделать это?
void testFPS() {
cv::VideoCapture cap(0);
//cap.set(cv::CAP_PROP_SETTINGS, 1); //open the settings menu
cap.set(cv::CAP_PROP_FRAME_WIDTH, 640);
cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480);
cap.set(cv::CAP_PROP_FPS, 30);
cap.set(cv::CAP_PROP_AUTOFOCUS, 0);
int frameCounter = 0;
std::stringstream ss;
cv::Mat mat;
auto start = std::chrono::high_resolution_clock::now();
while (true) {
cap >> mat;
frameCounter++;
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = finish - start;
double fps = frameCounter / elapsed.count();
ss.str("");
ss << "FPS: " << fps;
cv::putText(mat, ss.str(), cv::Point(30, 30), cv::FONT_HERSHEY_SIMPLEX, 0.8, cv::Scalar(0, 0, 255), 1, cv::LINE_AA);
cv::imshow("Win", mat);
if (cv::waitKey(30) >= 0) { //esc
break;
}
}
}
PS
Есть еще одна странная вещь (ошибка), которую я обнаружил. Если я отсоединяю камеру и подключаю ее снова, я получаю только 15 кадров, и "Logitech Webcam-Software" показывает мне, что функция "RightLight" отключена. Однако в этом случае я получаю только 15 кадров от объекта VideoCaputre OpenCV. Чтобы решить эту проблему, я должен включить функцию "RightLight" и отключить ее снова, чтобы убедиться, что я получу 30 кадров.