这是我的代码(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使用加载时动态链接。
答案 0 :(得分:0)
你是如何用MinGW编译OpenCV的(即你在CMake配置期间设置的BUILD_TYPE
和SSE*
选项是什么)?我问的原因是,在使用MinGW构建版本时,SSE优化存在一个已知错误,导致highgui
操作崩溃。请参阅我的其他答案here。