为 OpenCV 安装 NetBeans 7.2 MinGW

Posted

技术标签:

【中文标题】为 OpenCV 安装 NetBeans 7.2 MinGW【英文标题】:NetBeans 7.2 MinGW installing for OpenCV 【发布时间】:2012-09-11 16:56:27 【问题描述】:

我已经根据http://netbeans.org/community/releases/72/cpp-setup-instructions.html 在我的 PC 上安装了 minGW,并且我已经使用找到所有必要文件的 NetBeans 7.2 “恢复了默认值”。

但是当我制作测试示例 C++ 应用程序时,我收到以下错误:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find   -ladvapi32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lshell32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -luser32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lkernel32 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/MinGW-Windows/welcome_1.exe] Error 1 
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

谁能帮我为 NetBeans 安装 openCV 和 minGW?

【问题讨论】:

嗯,是的,他们是……我引用了他们…… 好的首先,我上面描述的问题通过重新安装mingw简单地解决了。但后来我尝试使用 OpenCV,使用他们的预编译库,我使用了本教程:thirumal.in/2012/01/using-opencv-231-with-netbeans-7-ide.html 现在我遇到了与上述问题类似的问题:c:/mingw/bin/../lib/gcc/mingw32/4.6 .2/../../../../mingw32/bin/ld.exe:找不到-lopencv_calib3d242.dll(我包含的所有.dll文件的列表还在继续)注意:我已将所有内容添加到我应该...的系统路径... 好的,我已经这样做了,现在我得到了一些关于包括的错误: undefined reference to `cv::imread(std::string const&, int)' 你认为我应该用引用改变什么? 你写的“OpenCV, using their precompiled libs”看起来你必须自己编译OpenCV。 【参考方案1】:

如何通过 Netbeans 7.2 构建和使用 openCV。循序渐进

准备工作

在“c:\mingw\bin”和“c:\mingw\lib”中

搜索并删除所有 libopencv*.dll , libopencv*.dll.a , libopencv*.a

用以下程序测试

下载 OpenCV-2.4.2.exe (222.9 MB) http://sourceforge.net/projects/opencvlibrary/files/ 下载 mingw-get-inst-20120426.exe (662.7 kB) http://sourceforge.net/projects/mingw/files/ 下载cmake-2.8.9-win32-x86.ziphttp://www.cmake.org/files/v2.8/cmake-2.8.9-win32-x86.zip

本手册中使用的所有参考资料:

本手册中的所有引用均以“T:\”开头。请更改为实际驱动器号! (主要是“c:\”)

C:\msys\1.0\src ---(如果不存在“msys”,则创建或使用 "C:\mingw\src")。 C:\mingw\bin

注意: 对于 msys-mingw 环境中的新项目,我始终使用“C:\msys\1.0\src”目录。 要具有相同的条件,gcc 也应该是 "4.7.0" 而不是 "4.6.2"

放在 PATH "C:\mingw\bin;C:\msys\1.0\bin;"的前面

您可能已经注意到,您不能使用 OpenCV-2.4.2.exe 附带的库。忽略所以文件夹 "...\opencv\build\x86\mingw\bin""...\opencv\build\x86\mingw\lib" 完全。

让我们获取新的 mingw 文件。

启动mingw-get-inst-20120426.exe

使用:下载最新的存储库...

确保指定的目录正确,通常是“C:\mingw”。 如下所述进行检查。 如果你还需要msys,那么也选择“MinGW Developer Toolkit”。

现在 MinGW-Get 下载所有新文件。 (4.7.0)

运行“OpenCV-2.4.2.exe”

文件所在的文件夹应该是“c:\msys\1.0\src”。 这会将所有文件写入新目录“opencv”中。 新文件夹:“C:\msys\1.0\src\opencv”。从现在开始,这是我们的***目录

打开“cmake-2.8.9-win32-x86.zip”并将文件复制到您的cmake文件夹中。

创建 Makefiles

运行“C:\cmake\bin\cmake-gui.exe

A:设置必填字段,点击“配置”

B:设置,点击“下一步”

设置并点击“确定”

可能的错误:在您的 PATH 中找到 sh.exe

A:错误“在您的 PATH 中找到了 sh.exe”

B:在“C:\msys\1.0\bin”或“C:\mingw\bin”中搜索 sh.exe,然后 重命名为“shxx.exe”

再次点击“配置”。

可能的错误:CMAKE_MAKE_PROGRAM 未设置

标记“CMAKE_MAKE_PROGRAM”并复制,点击“添加条目”

粘贴、设置并点击“确定” 再次点击“配置”。

现在应该可以了。 Cmake搜索编译环境

Cmake 显示选项页面

滚动浏览红色选项。不要改变任何东西 再次点击“配置”

让我们生成 Makefiles

点击“生成”

构建openCV

运行“cmd”进入目录“C:\msys\1.0\src\opencv\build\mingw”。在那里输入“make”

请稍候!

在我的电脑上大约需要 4 个小时

检查所有文件是否都在正确的位置

B: *.dll 在“C:\msys\1.0\src\opencv\build\mingw\bin”中 C: *.dll.a 在“C:\msys\1.0\src\opencv\build\mingw\lib”中

构建一个opencv程序

在“C:\msys\1.0\src\opencv”中新建文件夹“OpenCV-MakeC” 在文件夹“OpenCV-MakeC”中创建一个“Makefile”和“imgdisplay.cpp”。

为了避免复制和粘贴错误。这是download: 的2个文件

生成文件

MKDIR_P = C:/msys/1.0/bin/mkdir -p
DESTDIRB = build/Debug
DESTDIRD = dist/Debug
LIBDIRCV = ../build/mingw/lib
CFLAGS = -O2
CXX = C:/mingw/bin/g++.exe
Applic = imgdisplay

ALL: imgdisd

imgdisd:
    $(CXX) $(CFLAGS) -c -g $(Applic).cpp -I../build/include -MMD -MP -MF $(DESTDIRB)/$(Applic).o.d -o $(DESTDIRB)/$(Applic).o
    $(CXX) $(CFLAGS) -o $(DESTDIRD)/$(Applic) $(DESTDIRB)/$(Applic).o -L../build/mingw/bin $(LIBDIRCV)/libopencv_calib3d242.dll.a $(LIBDIRCV)/libopencv_contrib242.dll.a $(LIBDIRCV)/libopencv_core242.dll.a \
    $(LIBDIRCV)/libopencv_features2d242.dll.a $(LIBDIRCV)/libopencv_flann242.dll.a $(LIBDIRCV)/libopencv_gpu242.dll.a $(LIBDIRCV)/libopencv_highgui242.dll.a $(LIBDIRCV)/libopencv_imgproc242.dll.a \
    $(LIBDIRCV)/libopencv_legacy242.dll.a $(LIBDIRCV)/libopencv_ml242.dll.a $(LIBDIRCV)/libopencv_nonfree242.dll.a $(LIBDIRCV)/libopencv_objdetect242.dll.a $(LIBDIRCV)/libopencv_photo242.dll.a \
    $(LIBDIRCV)/libopencv_stitching242.dll.a $(LIBDIRCV)/libopencv_ts242.a $(LIBDIRCV)/libopencv_video242.dll.a $(LIBDIRCV)/libopencv_videostab242.dll.a 
md:
    $(MKDIR_P) "$(DESTDIRB)"
    $(MKDIR_P) "$(DESTDIRD)"

imgdisplay.cpp

/* 
 * File:   imgdisplay.cpp
 * Author: Administrator
 *
 * Created on 14. September 2012, 01:12
 */

#include <cstdlib>
#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace std;

int main( int argc, char* argv[] ) 


    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    cvMoveWindow("mainWin", 100, 100);
    IplImage* img;
    img = cvLoadImage("D:/grafik/Lightroom/light01.jpg");
    if (!img) 
        std::cout << "Could not open the image file" << std::endl;
        return -1;
    
    cvShowImage("My Picture", img); 
    cvWaitKey(0);
    cvReleaseImage(&img);
    return 0;

Netbeans 7.2 创建项目

文件 -- 新项目

使用如下所述的设置。

创建的项目

创建一个新目标

用鼠标右键单击“Makefile”

注意:如果您收到错误:Makefile:12: *** 缺少分隔符。停下来。

主要是复制和粘贴错误! (确保起始行没有空格。但设置了 2 个选项卡)。

创建新文件夹

用鼠标右键单击“Makefile” 使用新目标“md”

项目文件夹现在看起来像 ..

构建项目

调试项目

复制需要的 dll(C:\msys\1.0\src\opencv\build\mingw\bin 到 T:\msys\1.0\src\opencv\OpenCV-MakeC\dist\Debug)

打开 imgdisplay.cpp(双击)

设置断点第 17 行

17 cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);

单击“调试”按钮

程序停在 17 号线

未解析的标识符

如果 .cpp 文件的源代码如下所示

在您的项目上单击鼠标右键。 检查C/C++ Code As... 运行Reparse Project.

如果这还不够。 转至Project Properties 按照说明填写Include 输入字段。

清理

如果您将 sh.exe 重命名为 shxx.exe !重命名它! 如果您的 PATH 变量中有空格,请在空格周围加上引号(仅在 Visual Studio 等相关程序周围)。 我知道它们不是必需的,但一两个程序无法处理空格 在路径中!! 在一个

【讨论】:

好的,我已经尝试过这个并在 CMake 中构建过程中遇到以下错误:CUDA_TOOLKIT_ROOT_DIR 未找到或指定我也根本不在我的 c:\mingw\bin 文件夹中使用 make.exe! 首先,我们更改 PATH 变量。您必须再次运行 Cmake-gui.exe。不要忘记去 File .. 先删除缓存。一次又一次地运行配置,直到没有红色字段。然后运行Generate。仅当这不起作用时将make.exeC:\mingw\binC:\msys\1.0\bin 两个文件夹中的make.exe 都重命名为make-orig.exe 下载moskito-x.de/stack/files/make.exe 并将其复制到这两个文件夹中。运行make 看起来像“复制和粘贴”错误。下载后仅将Makefile.zip 重命名为Makefile! moskito-x.de/stack/files/Makefile.zip 并将其放入 Project 文件夹中。 耶稣,这确实有效! NetBeans 显示了很多错误,但它仍然有效,非常棒。我将尝试使用新编译的库在 NetBeans 上设置参数。但无论如何,让它最终运行真是太好了!还有 moskito-x,非常感谢您的耐心和帮助,尤其是对于上面这个很棒的答案(尽管我什至运气不好)...您的帮助最大! ;C:/mingw/lib/gcc/mingw32/4.7.0/include/c++ 也放入代码辅助..C++ 编译器..在;../build/include 之后包含目录【参考方案2】:

我也遇到过这种情况,但我没有使用make,而是使用了mingw32-make,然后它就起作用了。

您可以使用mingw-get install mingw32-make 安装mingw32-make

【讨论】:

以上是关于为 OpenCV 安装 NetBeans 7.2 MinGW的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Netbeans 7.2 IDE 上运行 Play Framework 项目

opencv 不适用于 NetBeans

将 openCV .dll 文件添加到 Netbeans C++ Qt 应用程序

如何添加netbeans平台编译iReport源?

Tesseract 加载语言失败 (Tess4j / Java / Netbeans)

Orangepi 香橙派 armbianp与opencv Python3安装