如何通过 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
可能的错误: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:12: *** 缺少分隔符。停下来。
主要是复制和粘贴错误! (确保起始行没有空格。但设置了 2 个选项卡)。
创建新文件夹
- 用鼠标右键单击“Makefile”
- 使用新目标“md”
项目文件夹现在看起来像 ..
构建项目
调试项目
- 复制需要的 dll(C:\msys\1.0\src\opencv\build\mingw\bin 到 T:\msys\1.0\src\opencv\OpenCV-MakeC\dist\Debug)
程序停在 17 号线
未解析的标识符
如果 .cpp 文件的源代码如下所示
在您的项目上单击鼠标右键。
检查C/C++ Code As...
运行Reparse Project.
如果这还不够。
转至Project Properties
按照说明填写Include 输入字段。
清理
- 如果您将 sh.exe 重命名为 shxx.exe !重命名它!
- 如果您的 PATH 变量中有空格,请在空格周围加上引号(仅在 Visual Studio 等相关程序周围)。
我知道它们不是必需的,但一两个程序无法处理空格
在路径中!!
- 在一个