我目前使用的OpenCV 2.3.1与Visual Studio 2008。我试图读取使用VideoCapture从哈帕克的Usb活2帧,但我遇到了一个奇怪的问题。下面是我的代码的相关部分:OpenCV的VideoCapture后才能正常工作断点
VideoCapture vc(0);
if (!vc.isOpened()) return -1;
Mat frame;
namedWindow("Camera");
bool success;
while (true)
{
success = vc.read(frame);
if (!success) continue;
imshow("Camera", frame);
if (waitkey(30) == 27) break;
}
最初,运行我在调试模式下的代码时,显示所捕获的帧的窗口只示出了实心灰色图像。试图调试我的程序,我在代码的开始处为断点放置了一个断点,并逐行遍历每一行。然而,在imshow中,窗口开始正确显示抓取的帧,显示我的相机捕捉到的内容。随后,我意识到只要在打开设备并将其显示在窗口之间输入断点,帧就会正确显示。
没有人有任何想法如何进入一个断点可能会影响在调试模式的程序的执行(在这种情况下,允许VideoCapture对象开始阅读框架正确)?
注:在运行可执行文件没有给出任何的问题,所以我张贴这个问题是出于好奇。
如果你不想使用'boost'或** C++ 11 **在您的项目(据我所知,您可以使用** ** VS2008没有** C++ 11 **支持),你可以使用'cv :: waitKey(2000)'来达到同样的目的。 – avtomaton
我已经尝试在每行代码执行某些操作后添加'cv :: waitKey(1000)'和'Sleep(1000)',但我仍然获得相同的灰色屏幕。不知何故,进入调试模式似乎不仅仅是一个线程收益。 –
在''howhow'命令之前试一下这行,并告诉我们输出:'std :: cout <<“捕获帧的大小是:”<< frame.size()<< std :: endl;' – Derman