C ++ Eclipse OpenCV:生成.exe文件和二进制文件,但没有显示图像

时间:2012-01-06 10:27:17

标签: opencv eclipse-cdt

这是我的代码(OpenCV文档中的第一个DisplayImage.cpp代码)

/*
 * DisplayImage.cpp
 *
 *  Created on: Dec 25, 2011
 *      Author: Arcturus */       
 #include <iostream>    
 #include <opencv2\opencv.hpp>

using namespace cv;

using namespace std;

int main(int argc, char** argv){

    Mat image;

    image = imread(argv[1], 1);

    if(argc!=2 || !image.data){

        cout<<"no image data";

        return -1;
    }

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE);

    imshow("Display Image", image);

    waitKey(10000);

    return 0;
}

构建完整的,可执行的,生成的二进制文件。

我在DisplayImage Debug文件夹中有我的图片 - blackbuck.bmp-。要运行代码,我去Run&gt;运行配置。选择DisplayImage Debug exe文件,键入blackbuck.bmp(也尝试使用绝对路径)并运行它。

在控制台的顶部,我收到消息:DisplayImage Debug。并且它根本不显示任何图像。这可能有什么问题?

我在Eclipse上使用CDT运行它。

感谢您的时间!

编辑:问题解决了!我不得不将库文件夹中的所有dll文件复制到生成可执行文件的文件夹中。不过,我仍然不明白为什么。毕竟,链接器已经链接了包含所有dll的库文件夹。如果有人能够解释这一点,那将对未来的调试有很大的帮助。谢谢karl和mevotron你的时间:)

编辑2:来自msdn网站: “使用DLL的潜在缺点是应用程序不是自包含的;它取决于是否存在单独的DLL模块。如果系统需要在进程启动时找不到的DLL,系统将使用加载时动态链接终止进程并向用户提供错误消息。在这种情况下,系统不会使用运行时动态链接终止进程,但缺少的DLL导出的函数对程序不可用。“

我认为这回答了我的问题。也许这意味着eclipse使用加载时动态链接。

1 个答案:

答案 0 :(得分:0)

你是如何用MinGW编译OpenCV的(即你在CMake配置期间设置的BUILD_TYPESSE*选项是什么)?我问的原因是,在使用MinGW构建版本时,SSE优化存在一个已知错误,导致highgui操作崩溃。请参阅我的其他答案here