在过去的几个小时里,我一直在努力让一个基本的OpenCV程序在Eclipse Mars IDE中运行。该程序包含以下main.cpp:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
waitKey(0); // Wait for a keystroke in the window
return 0;
}
到目前为止我做了什么:
在E:\ opencv安装OpenCV 2.4.12。已安装文件夹中的是“build”和“sources”文件夹。
使用MinGW GCC工具链创建了一个新的Eclipse C ++项目。
工具设置内部(项目属性 - &gt; C / C ++构建 - &gt;设置)我将GCC C ++编译器中的OpenCV库包含为“E:\ opencv \ build \ include”
在工具设置中,我在MinGW C ++ Linker中添加了所有库(即opencv_core2412,opencv_highgui2412,opencv_imgproc2412)并将库搜索路径设置为“E:\ opencv \ build \ x86 \ vc12 \ lib”< / p>
将我的二进制解析器设置为PE Windows Parser。
构建项目所有OpenCV函数都会得到未定义的引用错误,例如:
undefined reference to `cv::imread(std::string const&, int)' main.cpp line 17 C/C++ Problem
undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)' main.cpp line 26 C/C++ Problem
很奇怪,声明Mat图像不会出错并且将鼠标放在它上面会正确显示OpenCV的Mat文档。
谷歌搜索问题我发现由于某种原因,我可能需要使用CMake来构建我自己的库文件(步骤5中使用的文件)。因此在安装CMake gui之后,我使用E:\ opencv \ sources作为源目录,并将新目录E:\ opencv \ MinGW作为我的构建目录。我使用“Eclipse CDT4 -MinGW Makefile”生成器来配置文件。按下配置后,我将收到g ++编译器的以下错误(类似于我的gcc编译器):
CMake Error at CMakeLists.txt:71 (project):
The CMAKE_CXX_COMPILER:
E:/NVPACK/MinGW/bin/mingw32-g++
is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
然而,编译器被识别:“CXX编译器标识是GNU 4.8.1”和“C编译器标识是GNU 4.8.1”
非常感谢有关如何在Windows 7上的Eclipse Mars中正确设置OpenCV 2.4.12库的任何帮助!
答案 0 :(得分:9)
好吧,我希望这个足够详细!首先,一大杯咖啡会有所帮助!
让我们开始吧:
要求:
opencv_src_folder
的文件夹)步骤:
打开CMake-gui
opencv_src_folder
opencv_src_folder/Mingw_build/
configure
,然后选择Eclipse CDT4 - MinGW MakeFile
,然后选择<。li>
generate
。打开命令行(Windows + R)
cd opencv_src_folder/Mingw_build/
mingw32-make
:
这将使openGV使用MinGW,所以等到它完成了!将mingw32-make install
添加到您的系统路径&amp;重启会话。
Eclipse配置:
转到项目&gt;属性&gt; C / C ++ Build&gt;设置&gt; MinGW C ++ Linker&gt;库,并分别添加到库(-l):(不要忘记将245更改为用于lib文件的任何数字) opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
将构建的OpenCV库文件夹opencv_src_folder/Mingw_build/install/bin/
添加到库搜索路径(-L)。
测试:
您可以使用以下代码作为测试:
opencv_src_folder/Mingw_build/install/lib
最后建立你的项目!
希望有所帮助!
答案 1 :(得分:1)
上面的帖子真的很好,让我很亲密,但并非一直。以下是我采取的一些其他步骤,这些步骤终于对我有用。
构建和安装OpenCV的提示
注意::我是在Windows 10中构建的(在Mac上使用Parallel的桌面,但我认为这并不重要)
首先,我使用了Cmake 3.13.1版本并下载了最新的openCV存储库(上面的链接将您带到旧版本)。
确保每次使用Cmake-gui进行构建时,请清除缓存,然后从该文件夹中删除所有内容,或者创建一个新目录并在此新目录中进行构建(我个人做了第二个)
接下来,我从here下载了MinGW安装程序。但是在安装时,请改用以下配置
经过大量Google搜索和阅读github问题后,我发现某人只能使用此配置的MinGW进行构建和安装,我也是如此。此外,当您安装此版本的MinGW并添加此文件时,路径,请确保您从系统路径中删除了当前正在使用的任何其他版本,并且也删除了该文件夹。当您运行Cmake-GUI时,只要按一下configure,它就可以告诉您它是使用新的MinGW库构建的,如果您正确执行了所有操作。
接下来,像往常一样添加到系统路径并重新启动命令提示符。
首次在Cmake-GUI中配置后,还请执行以下操作:
搜索CMAKE_BUILD_TYPE,并在“值”列中添加“发布”(不带引号)
搜索WITH_MSMF并取消选中它。
搜索ENABLED_PRECOMPILED_HEADERS并取消选中它。
Eclipse配置提示
如上一篇文章所述,所有的日食对我都有效,除了我必须明确添加
在项目>属性> C / C ++构建>设置> GCC C ++编译器>其他>其他标志下的 --std=c++11
标志
在添加此代码之前,每个带有openCV库的程序都会给我1000多个错误。
答案 2 :(得分:0)
关注最佳答案的人可能会在编译期间遇到问题,如下所示:
modules\highgui\CMakeFiles\opencv_highgui.dir\build.make:187: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj' failed
mingw32-make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj] Error 1
CMakeFiles\Makefile2:2203: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
mingw32-make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
如果发生这种情况,可以给出一个非常好的答案here。
将其作为单独的可见性答案发布,对于那些来自谷歌(像我一样)有这个问题的人,否则他们会花20-30分钟尝试谷歌(就像我一样)。
编辑:
模块中的/ highgui / src / window_w32.cpp
请在#endif和#include行之间添加此行
# pragma GCC diagnostic ignored "-Wmissing-declarations"
#endif
/*start new code lines*/
#if (_WIN32_IE < 0x0500)
#pragma message("WARNING: Win32 UI needs to be compiled with _WIN32_IE >= 0x0500 (_WIN32_IE_IE50)")
#define _WIN32_IE 0x0500
#endif
/*end new code lines*/
#include <commctrl.h>
#include <stdlib.h>
#include <string.h>