我在netbeans 6.9 IDE中使用Opencv 2.0,我的操作系统是Windows 7 64位。当我尝试从实时源中捕获帧时,我得到的输出不清楚。
我的笔记本电脑凸轮(Acer水晶眼)效果不错。我尝试使用USB相机(罗技),但给出了相同的结果。下面是我正在使用的简单代码。
#include <stdio.h>
#include <stdlib.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char** argv) {
CvCapture *video = cvCaptureFromCAM(0);
IplImage * img = cvQueryFrame(video);
if(!cvGrabFrame(video)){
printf("could not grab a frame\n");
exit(0);
}
cvNamedWindow("original_image",0);
cvShowImage("original_image",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseCapture(&video);
return (EXIT_SUCCESS);
}
如果有人能帮我解决这个问题,那将是一个很大的帮助,因为我没有继续进行项目。提前致谢
答案 0 :(得分:1)
您所拥有的代码仅显示流的第一帧。打开视频流后,您应该创建一个循环,从中获取流中的新帧并显示它。在你的情况下,它会变成这样:
int main(int argc, char** argv)
{
CvCapture *video = cvCaptureFromCAM(0);
if(!cvGrabFrame(video)) \\check if the video can be queried for frames
{
printf("could not grab a frame\n");
exit(0);
}
cvNamedWindow("original_image",0); \\make your output window
while(1)
{
IplImage * img = cvQueryFrame(video); \\get the next frame from the stream
cvShowImage("original_image",img); \\show the image in the output window
if(cvWaitKey(0) == 27) \\if escape key is pressed, exit the loop
{
break;
}
}
cvReleaseImage(&img);
cvReleaseCapture(&video);
return (EXIT_SUCCESS);
}