2013-10-17 58 views
0

哪個OpenCV的功能支持模擬攝像機進行直播?哪個OpenCV的功能支持模擬攝像機直播?

請給我答案。

我試過OpenCV的CvCapture和VideoCapture功能。 它適用於USB攝像頭,但不適用於模擬攝像頭。

我試過VideoInput函數。它與模擬攝像機很好地工作,但我想opencv內置函數。 所以請幫助我。 謝謝你的時間。

這是我用過的cvcapture函數的代碼。

#include "stdafx.h" 
#include "cv.h" 
#include "cxcore.h" 
#include "highgui.h" 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <iostream> 
#include "videoInput.h" 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 
using namespace std; 

char key; 
int main() 
{ 
    cvNamedWindow("Camera_Output", 1); //Create window 
    CvCapture* capture = cvCaptureFromCAM(CV_CAP_ANY); //Capture using any camera    connected to your system 
    while(1){ //Create infinte loop for live streaming 

     IplImage* frame = cvQueryFrame(capture); //Create image frames from capture 
     cvShowImage("Camera_Output", frame); //Show image frames on created window 
     key = cvWaitKey(10);  //Capture Keyboard stroke 
     if (char(key) == 27){ 
      break;  //If you hit ESC key loop will break. 
     } 
    } 
    cvReleaseCapture(&capture); //Release capture. 
    cvDestroyWindow("Camera_Output"); //Destroy Window 
    return 0; 
} 

的代碼端

接着代碼使用VideoInput功能。

的代碼是代碼

#include "stdafx.h" 
#include "cv.h" 
#include "cxcore.h" 
#include "highgui.h" 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <iostream> 
#include "videoInput.h" 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 
using namespace std; 

int main(int, char**) 
{ 
    videoInput VI; 
    int numDevices = VI.listDevices(); 
    //int device1= 0; 
    VI.setup(0); 

    unsigned char* yourBuffer = new unsigned char[VI.getSize(0)]; 

    IplImage* colourImage = cvCreateImage(cvSize(320,240),8,3); 

    while(1) 
    { 
     VI.grabFrame(0, yourBuffer); 
     colourImage->imageData = (char*)yourBuffer; 
     cvConvertImage(colourImage, colourImage, 3); 

     cvShowImage("test",colourImage); 

     if(cvWaitKey(10) == 27) 
      break; 
    } 
    return 0; 
} 

和最後一個代碼是使用videocapture函數

代碼

#include "stdafx.h" 
#include "cv.h" 
#include "cxcore.h" 
#include "highgui.h" 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <iostream> 
#include "videoInput.h" 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 
using namespace std; 

int main() { 
VideoCapture stream1(-1); //0 is the id of video device.0 if you have only one camera. 

    if (!stream1.isOpened()) { //check if video device has been initialised 
     cout << "cannot open camera"; 
     return 0; 
    } 

//unconditional loop 
    while (true) { 
     Mat cameraFrame; 
     stream1.read(cameraFrame); 
     imshow("cam", cameraFrame); 
     if (waitKey(30) >= 0) 
     break; 
    } 
    return 0; 
} 

的代碼結束

請幫助我。

+0

請分享1)如何使你的模擬攝像機輸出進入你的電腦2)VideoInput代碼,工程和3)你試着用OpenCV的,試圖做你想做的是什麼的一個例子。 – KobeJohn

+0

實際上videoInput與模擬攝像頭運行良好,但我想使用Qt與C++的GUI目的,所以我得到了在我的qt項目中包含videoInput.lib文件後的錯誤,這就是爲什麼我搜索OpenCV的內置功能。 感謝您的回覆。 – user2865434

+0

好的更新。我在python中使用opencv,所以沒有試過你的代碼。請解釋兩個OpenCV示例中不起作用的內容。 – KobeJohn

回答