Есть ли способ доступа к драйверу камеры из OpenCV, чтобы отключить оптимизацию изображения?
Когда я начал играть с камерой, я написал простое приложение для измерения скорости FPS, но я получал только 15 кадров вместо 30 кадров в секунду с разрешением 640×480, как указано в характеристиках камеры.
Я провел некоторое исследование и выяснил, что могу отключить функцию «RightLight» на «программном обеспечении веб-камеры Logitech» (дополнительное программное обеспечение с веб-сайта Logitech). Я сделал это и получил 30 кадров.
Я хотел бы программно убедиться, что функция «RightLight» отключена при запуске приложения без использования дополнительного программного обеспечения. Есть ли способ сделать это?
void testFPS() {
cv::VideoCapture cap(0);
//cap.set(cv::CAP_PROP_SETTINGS, 1); //open the settings menucap.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;
}
}
}
Постскриптум
Есть еще одна странная вещь (ошибка), которую я обнаружил. Если я отсоединяю камеру и подключаю ее снова, я получаю только 15 кадров, и «Logitech Webcam-Software» показывает мне, что функция «RightLight» отключена. Однако в этом случае я получаю только 15 кадров от объекта VideoCaputre OpenCV. Чтобы решить эту проблему, я должен включить функцию «RightLight» и отключить ее снова, чтобы убедиться, что я получу 30 кадров.
Задача ещё не решена.
Других решений пока нет …