我有两个相机需要同时显示视频,可以在单独的窗口中,也可以在同一个窗口中.但是,使用以下代码,只显示其中一个摄像机输入(摄像机(1)).有人可以指出我的代码中需要更改的内容,或链接到其他可以达到预期效果的代码吗?
注意这不适用于立体视觉.
int main()
{
    //initialize and allocate memory to load the video stream from camera 
    CvCapture *capture1 = cvCaptureFromCAM(0);
    if( !capture1 ) return 1;
    //create a window with the title "Video1"
    cvNamedWindow("Video1");
    while(true) {
        //grab and retrieve each frames of the video sequentially 
        IplImage* frame1 = cvQueryFrame( capture1 );
        if( !frame1 ) break;
        //show the retrieved frame in the "Video1" window
        cvShowImage( "Video1", frame1 );
        //wait for 40 milliseconds
        int c = cvWaitKey(40);
        //exit the loop if user press "Esc" key  (ASCII value of "Esc" is 27) 
        if((char)c==27 ) break;
    }
    //initialize and allocate memory to load the video stream from camera 
    CvCapture *capture2 = cvCaptureFromCAM(1);
    if( !capture2 ) return 1;
    //create a window with the title "Video2"
    cvNamedWindow("Video2");
    while(true) {
        //grab and retrieve each frames of the video sequentially 
        IplImage* frame2 = cvQueryFrame( capture2 );
        if( !frame2 ) break;        
        //show the retrieved frame in the "Video2" window
        cvShowImage( "Video2", frame2 );
        //wait for 40 milliseconds
        int c = cvWaitKey(40);
        //exit the loop if user press "Esc" key  (ASCII value of "Esc" is 27) 
        if((char)c==27 ) break;
    }
    //destroy the opened window
    cvDestroyWindow("Video1"); 
    cvDestroyWindow("Video2");   
    //release memory
    cvReleaseCapture( &capture1 );
    cvReleaseCapture( &capture2 );
    return 0;  
    //VideoCapture1();
    //VideoCapture2();
}
Ras*_*sim 11
只是为了澄清,您使用的是C还是C++?如果您使用的是C++,请使用OpenCV的C++接口.
以下示例适用于我:
#include <opencv2/opencv.hpp>
int main()
{
    //initialize and allocate memory to load the video stream from camera 
    cv::VideoCapture camera0(0);
    cv::VideoCapture camera1(1);
    if( !camera0.isOpened() ) return 1;
    if( !camera1.isOpened() ) return 1;
    while(true) {
        //grab and retrieve each frames of the video sequentially 
        cv::Mat3b frame0;
        camera0 >> frame0;
        cv::Mat3b frame1;
        camera1 >> frame1;
        cv::imshow("Video0", frame0);
        cv::imshow("Video1", frame1);
        //wait for 40 milliseconds
        int c = cvWaitKey(40);
        //exit the loop if user press "Esc" key  (ASCII value of "Esc" is 27) 
        if(27 == char(c)) break;
    }
    return 0;
}
| 归档时间: | 
 | 
| 查看次数: | 17760 次 | 
| 最近记录: |