我在 netbeans 6.9 IDE 中使用 Opencv 2.0,我的操作系统是 windows 7 64 位。当我尝试从实时源中捕获帧时,我得到的输出不清晰。
我的笔记本电脑摄像头(Acer Crystal 眼)在其他方面运行良好。我尝试使用 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);
如果有人能帮我解决这个问题,那将是一个很大的帮助,因为我被困在一个项目中而没有继续进行。提前致谢
最佳答案
您的代码仅显示流的第一帧。打开视频流后,您应该创建一个循环,在该循环中从流中获取一个新帧并显示它。在你的情况下它会变成这样:
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);
}
关于c - Opencv 给了我一个不清楚的相机捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602725/