![](/img/trans.png)
[英]Capture image from webcam and display it - OpenCV - Eclipse - Windows
[英]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.