【发布时间】:2015-09-26 16:03:17
【问题描述】:
您好,我正在尝试从 OpenCV 运行此示例代码:
#include "opencv2\opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges", 1);
for (;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if (waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
我目前在 Macbook Pro 上使用 Windows 7 x64 BootCamp。我正在使用 Visual Studios 2013 和 OpenCV 2.4.9 运行此代码。
这就是我设置配置属性的方式:
VC++ Directories: Include Directories: H:\opencv\build\include;$(IncludePath)
Linker:General:Additional Library Directories: H:\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories)
Linker:Input:Additional Dependencies: opencv_calib3d249.lib;opencv_contrib249.lib;opencv_core249.lib;opencv_features2d249.lib;opencv_flann249.lib;opencv_gpu249.lib;opencv_highgui249.lib;opencv_imgproc249.lib;opencv_legacy249.lib;opencv_ml249.lib;opencv_nonfree249.lib;opencv_objdetect249.lib;opencv_ocl249.lib;opencv_photo249.lib;opencv_stitching249.lib;opencv_superres249.lib;opencv_ts249.lib;opencv_video249.lib;opencv_videostab249.lib;%(AdditionalDependencies)
当我在 Release x64 模式下单击本地 Windows 调试器时,我从 Visual Studios 收到以下错误:
Project3.exe 中 0x000007FEFD21B3DD 处的第一次机会异常: Microsoft C++ 异常:内存位置的 cv::Exception 0x000000000019A8A0.
如果有这个异常的处理程序,程序可能是安全的 继续。
当我改为单击 Break(害怕按 Continue)时,会弹出一个名为 Edges 的窗口,并且由于绿灯亮起,相机确实会打开。但我在命令窗口中也收到以下错误:
OpenCV 错误:在 cv:: 中断言失败 (scn == 3 || scn == 4) cvtColor,文件 ........\opencv\modules\imgproc\src\color.cpp,行 3737
我对 C++ 和 Visual Studios 还很陌生,如果有任何帮助,我将不胜感激。提前致谢!
【问题讨论】:
-
“按原样”为我工作。该错误应该意味着您的框架不是 RGB。
-
对不起@Miki 我对此很陌生。如果我的框架不是 RGB,我应该如何修复它?
-
代码工作正常(它是从 opencv 文档复制和粘贴的,对吗?),所以代码没有问题。尝试在 cvtColor 之前添加
std::cout << frame.channels();std::cout << edges.channels();,它应该会打印很多 31 -
@Miki 是的,它只是复制粘贴的。我添加了您建议的代码,但它没有打印任何内容。它仍然产生相同的错误并从程序中中断。
-
所以没有进入for循环?
标签: c++ visual-studio opencv visual-studio-2013