【问题标题】:OpenCV setup in Qt : my simple program returns an exceptionQt 中的 OpenCV 设置:我的简单程序返回异常
【发布时间】:2013-06-26 09:46:42
【问题描述】:

很抱歉重复了一个常见问题。 现在是一个星期,我试图在我的 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"

这是因为像下面这样的代码会导致错误“找不到 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 它甚至不属于异常处理程序的“捕获”。

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

【问题讨论】:

    标签: qt visual-c++ opencv installation


    【解决方案1】:

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

    【讨论】:

    • 如果我写的话,它甚至会退出这个代码:cout
    • 确保路径正确和/或文件未损坏 - 我没有使用 opencv 的经验 - 如果你确认这不是路径,也许有使用 opencv 经验的人可以帮助你/损坏的文件问题。
    • 谢谢。我确定路径。但是现在我检查了 im.rows 和 im.cols ,我发现它无法理解图像尺寸。但是如果我写: cout (1,1)[0] 它会返回奇怪的字符。图像具有三个通道。
    • Id im.data 为 null 意味着使用该图像可以随时返回访问冲突,请参阅有关为什么可以为 null 的文档:opencv.willowgarage.com/documentation/cpp/…Are you sure you don't have windows设置为隐藏已知类型的扩展名,并且您的图像实际上并未命名为 Tulips.jpg 并且具有 .jpg 扩展名且全名实际上不是:Tulips.jpg.jpg?
    • 没有路径没问题。它读取文件并返回行数和列数。如果文件路径错误,我看到 im.data 为 null,但如果路径正确,即使检查 im.data 是否为 null 也会导致崩溃。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多