gpt4 book ai didi

从网络摄像头捕获图像并显示它 - OpenCV - Eclipse - Windows

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:00 26 4
gpt4 key购买 nike

我是 OpenCV 的新手,我想用 OpenCV 显示我的网络摄像头看到的内容。我正在使用 C 编码语言。

我试过这段代码:

#include <stdio.h>

#include <cv.h> // Include the OpenCV library
#include <highgui.h> // Include interfaces for video capturing

int main()
{
cvNamedWindow("Window", CV_WINDOW_AUTOSIZE);
CvCapture* capture =cvCreateCameraCapture(-1);
if (!capture){
printf("Error. Cannot capture.");
}
else{
cvNamedWindow("Window", CV_WINDOW_AUTOSIZE);

while (1){
IplImage* frame = cvQueryFrame(capture);
if(!frame){
printf("Error. Cannot get the frame.");
break;
}
cvShowImage("Window",frame);
}
cvReleaseCapture(&capture);
cvDestroyWindow("Window");
}
return 0;
}

我的网络摄像头灯亮了,但结果是一个完全灰色的窗口,没有图像。

你能帮帮我吗?

最佳答案

你需要添加

cvWaitKey(30);

while 循环结束。


cvWaitKey(x)/cv::waitKey(x) 做了两件事:

  1. 它会等待 x 毫秒以等待按键按下。如果在此期间按下了某个键,它会返回该键的 ASCII 代码。否则,它返回 -1
  2. 它处理任何窗口事件,例如使用 cvNamedWindow() 创建窗口,或使用 cvShowImage() 显示图像。

对于 opencv 新手来说,一个常见的错误是在视频帧循环中调用 cvShowImage(),而没有在每次绘制之后使用 cvWaitKey(30)。在这种情况下,屏幕上不会出现任何内容,因为从来没有给 highgui 时间来处理来自 cvShowImage() 的绘制请求。

参见 What does OpenCV's cvWaitKey( ) function do?了解更多信息。

关于从网络摄像头捕获图像并显示它 - OpenCV - Eclipse - Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21336497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com