По каким-то странным причинам программе не удается прочитать кадр с веб-камеры. Он успешно открывает веб-камеру. Я искал эту проблему, и я нашел множество решений, ни одно из которых не работало со мной. Это мой код
#include <iostream>
#include <cstdlib>
#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"
int main()
{
// access the default webcam
cv::VideoCapture cap(0);
// Double check the webcam before start reading.
if ( !cap.isOpened() ){
std::cerr << "Cannot open the webcam " << std::endl;
exit (EXIT_FAILURE);
}
cv::Mat frame;
cv::namedWindow("webcam",CV_WINDOW_AUTOSIZE);
while ( true ){
// acquire frame
cap >> frame;
// Safety checking
if ( !frame.data ){
std::cerr << "Cannot acquire frame from the webcam " << std::endl;
break;
}
cv::imshow("webcam", frame);
if ( cv::waitKey(30) == 27){
std::cout << "esc key is pressed" << std::endl;
break;
}
}
return 0;
}
и это окно перед завершением программы.
Я использую Windows 7 (ноутбук Dell). Код скомпилирован в режиме релиза с привязкой к .dll. Версия OpenCV — 2.4.10.
В командной строке
cl /EHsc main.cpp /Fetest.exe /I D:\CPP_Libraries\opencv_2.4.10\build\include /link /LIBPATH:D:\CPP_Libraries\opencv_2.4.10\build\x86\vc12\lib opencv_core2410.lib opencv_highgui2410.lib
Я запустил тот же код в Ubuntu (двойная загрузка наряду с Windows 7), и он открывает веб-камеру, но не через HighGUI, и я получил эту ошибку
HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP
init done
opengl support available
Любые предложения по этому вопросу. После некоторых раскопок некоторые люди указал на cmake
поэтому мне нужно переустановить opencv и настроить cmake
должным образом. Есть ли какие-либо решения для этой проблемы без переустановки библиотеки, если это действительно проблема для Ubuntu и Windows? Спасибо
Следуйте документации opencv для VideoCapture heure: VideoCapture. Это простой пример для захвата видео в C ++.
Есть некоторые различия с вашим кодом, на это Mat frame
внутри петли.