2014-01-18 4 views
-2

Аналогичные вопросы задают много раз, но нет рабочих решений.Как получить прямой эфир из веб-камеры в opencv ubuntu

следующий код, который я использовал:

#include "opencv2/highgui/highgui.hpp" 
#include <opencv2/objdetect/objdetect.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <iostream> 
#include <vector> 
#include <stdio.h> 


int main() 
{ 

//Data Structure to store cam. 
CvCapture* cap=cvCreateCameraCapture(0); 
//Image variable to store frame 
IplImage* frame; 
//Window to show livefeed 
cvNamedWindow("LiveFeed",CV_WINDOW_AUTOSIZE); 

while(1) 
{ 
    //Load the next frame 
    frame=cvQueryFrame(cap); 
    //If frame is not loaded break from the loop 
    if(!frame) 
     printf("\nno");; 
    //Show the present frame 
    cvShowImage("LiveFeed",frame); 
    //Escape Sequence 
    char c=cvWaitKey(33); 
    //If the key pressed by user is Esc(ASCII is 27) then break out of the loop 
    if(c==27) 
     break; 
} 
//CleanUp 
cvReleaseCapture(&cap); 
cvDestroyAllWindows(); 
} 

Мой выход «нет» печатается бесконечно. то есть. нет питания камеры. Пожалуйста, помогите кому-нибудь !!!

ответ

1

Возможно, нет камеры для индекса 0? попробуйте другие цифры.

также, так как вы, кажется, довольно новыми для этого, пожалуйста, избежать устаревшие С-апи использовать новую C++ API вместо этого, старый уже не активно поддерживается, так как уже 3 года.


#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/core/core.hpp" 

using namespace cv; 

int main() 
{ 
    VideoCapture cap(-1);  // get 'any' cam 
    while(cap.isOpened()) // check if we succeeded 
    { 
     Mat frame; 
     if (! cap.read(frame)) 
      break; 
     imshow("lalala",frame); 
     int k = waitKey(33); 
     if (k==27) 
      break; 
    } 
    return 0; 
} 
+0

Спасибо за comment..but я уже пробовал использовать -1,1 и т.д. Это didnot работа .. я могу видеть видеопоток в VLC, сыр и т.д., но не здесь. Я не знаю, почему –

0

Вместо "-1", чтобы получить первую камеру/по умолчанию, используйте "CV_CAP_ANY".

VideoCapture cap(CV_CAP_ANY); 
Смежные вопросы