我是新手,但我一直在阅读和尝试不同的设置,以帮助缩小问题!任何帮助让我越过这个路障都会非常感激。
目前我正在运行:Win 7 Ultimate,Visual C ++ 2010 Express,OpenCV 2.2.0和Microsoft - LifeCam Studio网络摄像头 - Silver 1080p HD。
我没有构建错误,当我运行程序时,我的相机亮起(蓝灯指示它正在亮起)屏幕弹出,我认为应该显示我的相机输入,但它只是一个灰色的盒子,没有任何东西内。我认为下面的代码有助于缩小问题的范围,但我不知所措。
int main()
{
CvCapture *webcam = NULL;
webcam = cvCreateCameraCapture(-1);
if(webcam!=NULL)
{
IplImage *frame = cvQueryFrame(webcam);
cvShowImage("WEBCAM_TEST",frame);
cvWaitKey(0);
return 0;
}
else
{
std::cout<<"CAMERA NOT DETECTED"<<std::endl;
return 0;
}
}
答案 0 :(得分:3)
您的代码有时显示黑色图像,有时在我的系统上显示正确的图像(Windows 7 64 VS2010 OpenCV 2.4.3)...当我把它放在循环中以便非停止流式传输图像时...所以只需稍微修改你的代码并尝试......
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
int main()
{
CvCapture *webcam = NULL;
webcam = cvCreateCameraCapture(-1);
if(webcam!=NULL)
{
while(true)
{
IplImage *frame = cvQueryFrame(webcam);
cvShowImage("WEBCAM_TEST",frame);
cvWaitKey(20);
}
}
else
{
std::cout<<"CAMERA NOT DETECTED"<<std::endl;
return 0;
}
return 0;
}
答案 1 :(得分:1)
在OpenCV中,如果你在创建相机捕获后获得帧通常是灰色的。所有你需要做的就是获得下一帧或在获得第一帧之前等待。这段代码:
int _tmain(int argc, _TCHAR* argv[])
{
VideoCapture cap(0);
if(!cap.isOpened())
return -1;
Mat frame;
namedWindow("01",1);
//cap >> frame; //option 1
//waitKey(5000); //option 2
cap >> frame;
imshow("01", frame);
int key = waitKey(30);
return 0;
}
将显示灰色框,但如果取消注释选项1或选项2 - 它将正常工作。