日期:2014-05-17  浏览次数:21046 次

WindowsXP + OpenCV 2.0 + Netbeans 6.7 ( MinGW / Cygwin) 安装配置 详细图解【转】

因为要做作业,昨晚在实验室捣腾了半天也没搞定,Goolge了半天也没个结果,今天才发现原来OpenCV的官网上,已经写很清楚了,今天再一试,轻轻松松就搞定了,看来不能过分迷信搜索引擎的力量

1. 安装好 Netbeans 6.7 并保证能编译 C++ 程序

这很容易,先安装好 Cygwin,再安装 Netbeans  就可以了,Netbeans 会自动搜索到 C/C++ 编译器,不需要你做任何设置,十分傻瓜式的

2 安装 OpenCV 2.0

这也很容易,下个 OpenCV 2.0,运行安装程序,注意其中有一步骤问是否要把 OpenCV 添加到系统目录中(英文),选择“是” ,就可以了

3. Netbeans 6.7 中设置 OpenCV 2.0

这是难点,参考 http://opencv.willowgarage.com/wiki/InstallGuide (打开网页,拖到最底有详细说明),我总结出整个步骤如下:

3.1 在 NetBeans 中新建一个 C++ 工程

找到 OpenCV2.0\samples\c 中的 image.cpp 文件,打开它,将里面的代码全部复制到 你新建工程的 main.cpp  中 (覆盖 原有的内容)

按 F6 尝试编译运行,你会得到如下的错误提示:

main.cpp:1:67: cv.h: No such file or directory
main.cpp:2:21: highgui.h: No such file or directory

下一步,我们要来解决这个问题

3.2 添加 OpenCV 头文件目录

NetBeans 中,打开“项目” 面板,找到你刚才新建的项目,右键点“属性”,点“C++编译器” 一项,配置下拉列表中,选择“所有配置”,在“包含目录” 一栏,填上你 OpenCV 头文件所在的目录 (根据你安装OpenCV的实际情况),然后点“应用”,再点“确定”

再按 F6 尝试编译运行,又会看到下一些错误提示,

/cygdrive/D/OpenCV2.0/include/opencv/cxoperations.hpp: In member function `void cv::Ptr<_Tp>::addref()':
In file included from /cygdrive/D/OpenCV2.0/include/opencv/cxcore.hpp:2243,
???????????????? from /cygdrive/D/OpenCV2.0/include/opencv/cxcore.h:2123,
???????????????? from /cygdrive/D/OpenCV2.0/include/opencv/cv.h:58,
???????????????? from main.cpp:1:

主要是讲某某文件,哪一行出错,点开一看发现这些行都是include "cxoperations.hpp", 估计是 cxoperations.hpp 这个文件有问题

下面的步骤将解决这个问题

3.3 修改 cxoperations.hpp 文件

用 NetBeans 打开 cxoperations.hpp (在OpenCV Include 目录下), 找到 68 行 ,将它修改成下面的样子(加上 || __MINGW__ )

接着要在 g++ 编译选项中,添加 -D __MINGW__  类似步骤 3.2 ,如下图

再按 F6 尝试编译运行,这次编译没有错了,但是出现大量的undefined reference XXX 之类的连接错误,

/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:13: undefined reference to `_cvLoadImage'
/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:19: undefined reference to `cv::Mat::Mat(_IplImage const*, bool)'
/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:35: undefined reference to `cv::cvtColor(cv::Mat const&, cv::Mat&, int, int)'
/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:93: undefined reference to `cv::cvtColor(cv::Mat const&, cv::Mat&, int, int)'
/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:96: undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
/cygdrive/f/Class/CV/Exercise/test_opencv/main.cpp:100: undefined reference to `_cvShowImage'
/cy