【问题标题】:Opencv2.4.0 with mingw in windows get crashedWindows 中带有 mingw 的 Opencv2.4.0 崩溃
【发布时间】:2012-10-11 21:37:38
【问题描述】:

我按照步骤in this SO link 在windows 中使用OpenCV2.4.0 编译了一个示例程序。我使用 Mingw 在 DEVC++ 和 NetBeans 中进行了设置。我的示例程序正在正确编译,但是当我运行 exe 时,应用程序崩溃了。

但是在同一台机器上我使用了 opencv2.1.0 并且编译了相同的示例程序并且运行它时没有崩溃。

以下是我尝试执行的示例代码:

#include "highgui.h"
using namespace std;
int main( int argc, char** argv ) {
IplImage* img = cvLoadImage( "C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\Sample Pictures\\Water lilies.jpg" );
cvNamedWindow( "Sample", CV_WINDOW_AUTOSIZE );
cvShowImage( "Sample", img );
cvWaitKey(0);
cvReleaseImage( &img );
cvDestroyWindow( "Sample" );
} 

更新:

我按照 moskito-x 链接的步骤构建 opencv,当我按“配置”时,出现以下错误。我的 make 文件大小也是 35kb。 有什么建议可以解决这个问题吗?

【问题讨论】:

    标签: netbeans opencv mingw dev-c++


    【解决方案1】:

    使用“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”中的库

    您不能使用 OpenCV-2.4.x.exe 附带的库。

    正如论坛中的一些开发人员和我发现的那样。在某些系统上,“opencv 2.4.x”的预编译库无法使用。
    编译您自己的程序是可行的,但是如果您尝试运行它们会崩溃。在没有“opencv 2.4.x”的预编译库无法运行之前,您必须自己compile opencv。

    完全忽略文件夹“...\opencv\build\x86\mingw\bin”和“...\opencv\build\x86\mingw\lib”。

    【讨论】:

    • 您好,感谢您的回答。我尝试了您链接中的步骤,但出现错误。我已经更新了我的问题。请帮忙...
    • 您还没有运行mingw-get-inst-20120426.exeUse : Download latest repository 并选择MinGW Developer Toolkit。必须有C:\mingw\bin\libgmp-10.dllC:\mingw\var\cache\mingw-get\packages\libgmp-5.0.1-1-mingw32-dll-10.tar.lzma。不要忘记将 'C:\mingw\bin' 放入您的 PATH Environment 变量中。
    • 是的,我只从最新的存储库下载,您提到的两个文件都在 mingw 文件夹中。路径也设置正确,我的 PATH 变量如下所示: C:\mingw\bin;C:\msys\1.0\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT %\System32\WindowsPowerShell\v1.0\;
    • 我正在尝试构建 opencv2.4.0。
    • 你在 comp.的openCV。如果文件C:\mingw\bin\libgmp-10.dll在目录中,Cmake 应该会找到这些。关闭并重新启动后,所有程序都知道所有 PATH 更改。
    【解决方案2】:

    正如已经指出的,您不能依赖预编译的二进制文件。我也遇到了很多问题,最后还是编译了自己的二进制文件。我的设置适用于 Windows7、Eclipse CDT (Juno) 和 MinGW。你可以查看我在 Stackoverflow 上的帖子here

    【讨论】:

      【解决方案3】:

      我猜这是与内存管理有关的错误。也许是因为你在图像之前释放了窗口。但无论如何,您应该使用 OpenCV C++ 接口,因为它会自动完成很多工作。使用 C++ 接口,您的代码将如下所示:

          #include <opencv.hpp>
      
          int main( int argc, char** argv ) {
      
                  cv::Mat img = cv::imread("C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\Sample Pictures\\Water lilies.jpg");
      
                  cv::imshow("Sample", img);
                  cv::waitKey(0);
      
                  return 0
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-04
        • 2012-10-25
        • 1970-01-01
        • 2011-06-04
        • 2016-05-28
        • 1970-01-01
        相关资源
        最近更新 更多