opencv - C++ Eclipse OpenCV : . 生成了 exe 文件和二进制文件,但

这是我的代码(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;
}

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

我的图像 - blackbuck.bmp- 在 DisplayImage Debug 文件夹中。要运行代码,我转到运行 > 运行配置。选择 DisplayImage Debug exe 文件,键入 blackbuck.bmp(也尝试使用绝对路径)并运行它。

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

我在 Eclipse 上运行它,使用 CDT。

感谢您的时间!

编辑:问题解决了!!!我必须将库文件夹中的所有 dll 文件复制到生成可执行文件的文件夹中。不过,我仍然不明白为什么。毕竟,链接器已经在链接包含所有 dll 的库文件夹。如果有人能解释一下,这对以后的调试会有很大帮助。感谢 karl 和 mevotron 抽出宝贵时间 :)

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

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

最佳答案

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

关于opencv - C++ Eclipse OpenCV : . 生成了 exe 文件和二进制文件,但没有显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756397/

相关文章:

android - Android:如何将图库中的图像加载到OpenCv Mat变量中?

opencv - 我可以在POSIT + OpenCV中使用mm吗?

android - Android OpenCV手势识别

opencv - 在opencv中未检测到网络摄像头

android - Android:BitmapFactory.decodeFile/OpenCV确

iphone - openCV CvSVM::save为iPhone生成太大的文件

opencv - cvBlobsLib 的特征向量和特征值

opencv - Ubuntu:NetBeans:OpenCV:找不到共享库

android - 1 channel iplimage -> Android 位图

performance - OpenCV 的视频流很慢