2015-04-29 2 views
1

По каким-то странным причинам программа не может прочитать фрейм с веб-камеры. Тем не менее, он открывает веб-камеру. Я искал эту проблему, и я обнаружил множество решений, с которыми никто из них не работал. Это мой кодне может читать с веб-камеры

#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; 
} 

и это окно перед завершением программы.

enter image description here

Я использую 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 

Я запустить тот же код в убунту (двойной загрузки наряду с Windows 7), и это открывает веб-камеру, но не через HighGUI и я получил эту ошибку

HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP 
init done 
opengl support available 

Любые предложения, касающиеся это вопрос. После некоторых раскопок some ppl указал на cmake, поэтому мне нужно переустановить opencv и правильно настроить cmake. Есть ли какие-либо решения для этой проблемы без переустановки библиотеки, если это действительно проблема для ubuntu и Windows? Спасибо

ответ

-1

Следуйте документации opencv для VideoCapture heure: VideoCapture. Это простой пример для захвата видео на C++.

Есть некоторые отличия от вашего кода: on Mat frame находится внутри цикла.

+0

Как это решает мою проблему? – CroCo

+0

Ну, этот код работает, поэтому, если он отсутствует на вашем компьютере, это либо неисправная установка, либо ваша камера, которая не совместима с opencv. Вы также можете попробовать другой индекс камеры: 'VideoCapture cap (1)'. Возможно, по какой-либо причине ваша камера не установлена ​​по умолчанию – Soma

Смежные вопросы