Qt中的OpenCV设置:我的简单程序返回异常

时间:2013-06-26 09:46:43

标签: qt visual-c++ opencv installation

很抱歉重复一个常见问题。 现在是一周,我试图在我的32位Windows 7中使用Qt 5.0.2或Microsoft VC ++ express版本设置openCV,但没有成功。 现在为QT: - 这是QT 5.0.2 MinGW。 - 它运行程序不成功使用opencv。

现在,我的.pro文件的opencv行是这样的:

INCLUDEPATH += "C:\opencv\build\include"
LIBS += "C:\opencv\bin\bin\libopencv_core243.dll"
LIBS += "C:\opencv\bin\bin\libopencv_highgui243.dll"

这是因为像bellow这样的代码导致错误“找不到core.hpp”:

LIBS += -LC:\\opencv\\build\\x86\\vc10\\lib\
libopencv_core243 \
libopencv_highgui243 \

现在它的opencv函数自动完成运行,如果你写:

cv::Mat im = cv::imread("D:\\Tulips.jpg");

没有错误。 但如果在此之后你写道:

cv::imshow("im",im);

它使用异常代码关闭程序:c0000005 它甚至不会落入异常处理程序的“catch”中。

奇怪的是,VC ++ express也在做同样的事情。 我应该提一下,我自己为MinGW编译了opencv,并且构建是好的,因为它适用于Code :: Blocks。 我在我的VC ++ 10中使用了预构建的opencv,但这也不起作用。 请帮助我!非常感谢!

2 个答案:

答案 0 :(得分:1)

检查 im.data 是否为空。因为c0000005是访问冲突,这意味着您使用了一些无效指针,因此显示更多代码或更好的解决方案是使用调试器并逐步执行代码。

答案 1 :(得分:0)

我终于找到了答案!! 这完全是防火墙。 我的防火墙阻止了进程,opencv无法访问内存。 当我使用cvLoadImage()时,它工作,但cv :: imread()没有。 我为视觉卫星添加了一个例外,但似乎还不够。现在我的防火墙已经关闭,最后一切都是OKKK :):)