繁体   English   中英

openCV是否可以同时设置两个摄像头窗口?

[英]Are 2 simultaneous webcam windows possible with openCV?

我正在将通用图像转换应用于实时网络摄像头捕获。 我想在一个窗口中显示原始网络摄像头,并在另一个窗口中显示具有转换的图像。 但是,我在两个窗口上都得到了相同的图像(已过滤),我想知道我是否受到OpenCV API限制,或者是否缺少某些东西? 我的代码段看起来像-

/* allocate resources */
cvNamedWindow("Original", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Filtered", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCaptureFromCAM(0);

do {    
    IplImage* img = cvQueryFrame(capture);
    cvShowImage("Original", img);           

    Filters* filters = new Filters(img);
    IplImage* dst = filters->doSobel();
    cvShowImage("Filtered", dst);

    cvWaitKey(10);      
} while (1);

/* deallocate resources */
cvDestroyWindow("Original");
cvDestroyWindow("Filtered");
cvReleaseCapture(&capture);

这是可能的! 尝试将img复制到另一个IplImage,然后再将其发送到处理中,看看是否首先起作用。

是的,我知道你会说什么。 但是,只要先尝试一下,看看它是否可以满足您的要求。 下面的代码只是为了说明您应该做什么,我不知道它是否可以工作:

/* allocate resources */
cvNamedWindow("Original", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Filtered", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCaptureFromCAM(0);    

do {    
    IplImage* img = cvQueryFrame(capture);
    cvShowImage("Original", img);           

    IplImage* img_cpy = cvCreateImage(cvGetSize(img), 8, 3);
    img_cpy = cvCloneImage(img);

    Filters* filters = new Filters(img_cpy);
    IplImage* dst = filters->doSobel();
    cvShowImage("Filtered", dst);

    /* Be aware that if you release img_cpy here it might not display 
     * the data on the window. On the other hand, not doing it now will
     * cause a memory leak.
     */
    //cvReleaseImage( &img_cpy );  

    cvWaitKey(10);      
} while (1);

/* deallocate resources */
cvDestroyWindow("Original");
cvDestroyWindow("Filtered");
cvReleaseCapture(&capture);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM