在Windows 7上开始使用OpenCV 2.4和MinGW

如何安装OpenCV 2.4并使用MinGW编译我的代码?

1.安装OpenCV 2.4.3

首先,从sourceforge.net获取OpenCV 2.4.3 。 它是一个自解压文件,所以只需双击文件即可开始安装。 把它安装在一个目录中,比如C:\

OpenCV自解压

等到所有的文件被提取。 它将创建一个包含OpenCV头文件,库,代码示例等的新目录C:\opencv

现在您需要将C:\opencv\build\x86\mingw\bin目录添加到您的系统PATH中。 该目录包含运行代码所需的OpenCV DLL。

打开控制面板系统高级系统设置高级选项卡环境变量…

你会看到如下所示的窗口:

将OpenCV DLL目录添加到系统路径

在系统变量部分,
选择Path (1),点击Edit … (2),添加C:\opencv\build\x86\mingw\bin (3),然后点击Ok

这将完成您的计算机上的OpenCV 2.4.3安装。


2.安装MinGW编译器套件

我强烈建议你使用gcc(GNU编译器集合)编译你的代码。 gcc是Linux系统中广泛使用的编译器套件,MinGW是Windows的本地端口。

从Sourceforge.net下载MinGW安装程序并双击开始安装。 只需按照向导,选择要安装的目录,说C:\MinGW

在MinGW安装中选择目录

选择“C编译器”和“C ++编译器”进行安装。

选择要安装的组件

安装程序将从互联网下载一些软件包,所以你必须等待一段时间。 安装完成后,使用上述步骤将C:\MinGW\bin添加到您的系统路径。

将MinGW bin目录添加到系统路径

要测试MinGW安装是否成功,请打开一个命令行框并输入: gcc 如果一切正常,将显示此消息:

 gcc: fatal error: no input files compilation terminated 

这就完成了MinGW的安装,现在是编写“Hello,World!”的时候了。 程序。


写一个示例代码

打开你的文本编辑器,并输入下面的代码,并将文件保存到loadimg.cpp

 #include "opencv2/highgui/highgui.hpp" #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1); if (im.empty()) { cout << "Cannot open image!" << endl; return -1; } imshow("image", im); waitKey(0); return 0; } 

lena.jpg或任何你喜欢的图片放在同一个目录下面的文件中。 打开一个命令行框并通过输入以下代码来编译上面的代码:

 g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg 

如果编译成功,它将创建一个名为loadimg.exe的可执行文件。

类型:

 loadimg 

执行程序。 结果:

你的第一个OpenCV程序的结果


4.去哪里?

现在你的OpenCV环境已经准备好了,下一步呢?

  1. 转到示例目录→ C:\opencv\samples\cpp
  2. 阅读并编译一些代码。
  3. 写你自己的代码。

@bsdnoobz答案中的说明确实有帮助,但没有得到OpenCV在我的系统上工作。

显然我需要自己编译这个库才能使它工作,而不是依靠预先构建的二进制文件(这会导致我的程序崩溃,可能是由于与我的系统不兼容)。

我确实得到它的工作,并编写了一个全面的指南, 编译和安装OpenCV,并配置Netbeans使用它。

为了完整性,它也在下面提供。


当我第一次使用OpenCV时,遇到了两个主要困难:

  1. 让我的程序不要立即崩溃。
  2. 让Netbeans玩的很好,特别是让调试器工作的时间。

我读了很多教程和“how-to”的文章,但没有一篇是真正全面和彻底的。 最终我成功地建立了环境。 经过一段时间,使用这个(伟大的)图书馆,我决定写这个小教程,希望可以帮助别人。

这是本教程的三个部分:

  1. 编译和安装OpenCV。
  2. 配置Netbeans。
  3. 一个示例程序。

我使用的环境是 :Windows 7,OpenCV 2.4.0,Netbeans 7和MinGW 3.20(带有编译器gcc 4.6.2)。

假设 :您的系统上已经安装了MinGW和Netbeans。

编译和安装OpenCV

当下载OpenCV时,存档实际上已经在'build'文件夹中包含了预先编译的二进制文件(编译过的库和DLL)。 起初,我尝试使用这些二进制文件,假设有人已经完成了编译我的工作。 这没有用。

最后我想我必须在自己的系统上编译整个库才能正常工作。

幸运的是,由于CMake,编译过程相当简单。 CMake(代表跨平台制作)是一种生成特定于您的编译器和平台的makefile的工具。 我们将使用CMake来配置我们的构建和编译设置,生成一个“makefile”,然后编译这个库。

步骤是:

  1. 下载CMake并安装它(在安装向导中选择添加CMake到系统PATH)。
  2. 下载OpenCV的“发布”版本。
  3. 将存档解压缩到您选择的目录。 我将使用c:/opencv/
  4. 启动CMake GUI。
    1. 浏览源目录c:/opencv/
    2. 选择构建二进制文件的位置。 我选择了c:/opencv/release
      CMake配置 -  1
    3. 点击“配置”。 在打开的屏幕上根据您的编译器选择生成器。 在我们的例子中是“MinGW Makefiles”。
      CMake配置 -  2
    4. 等待一切加载,之后你会看到这个屏幕:
      CMake配置 -  3
    5. 如果需要更改设置,或保留默认设置。 完成后,再次按“配置”。 您应该在日志窗口中看到“配置完成”,红色背景将从所有单元中消失。
      CMake配置 -  4
    6. 在这一点上,CMake已经准备好生成makefile,用我们的编译器编译OpenCV。 点击“生成”并等待生成生成文件。 当这个过程结束时,你应该看到“生成完成”。 从这一点我们将不再需要CMake。
  5. 打开MinGW shell(以下步骤也可以从Windows的命令提示符下完成)。
    1. 进入目录c:/opencv/release/
    2. 键入mingw32-make并按回车。 这应该开始编译过程。
      MinGW Make
      MinGW Make  - 编译
    3. 编译完成后,OpenCV的二进制文件就可以使用了。
    4. 为了方便起见, 我们应该把目录C:/opencv/release/bin到系统PATH中 这将确保我们的程序可以找到所需的DLL运行。

配置Netbeans

应该告诉Netbeans在哪里可以找到头文件和编译的库(在前一节中已经创建)。

头文件需要两个原因:编译和代码完成。 链接阶段需要编译的库。

注:为了使调试工作,OpenCV DLL应该是可用的,这就是为什么我们将包含它们的目录添加到系统路径(上一节,步骤5.4)。

首先,你应该确认Netbeans配置正确,以使用MinGW。 请参阅下面的屏幕截图,并验证您的设置是否正确(考虑根据您自己的安装路径更改)。 还要注意 make命令应该是msys而不是 Cygwin。

Netbeans MinGW配置

接下来,对于在Netbeans中创建的每个新项目,您应该定义include路径(包含头文件的目录),库路径以及您打算使用的特定库。 在“项目”窗格中右键单击项目名称,然后选择“属性”。 添加包含路径(根据您自己的安装修改路径):

Netbeans项目包含路径

添加库路径:

Netbeans库路径

添加您打算使用的特定库。 这些库将在链接阶段动态链接到您的程序。 通常,根据程序的特定需求,您将需要core库和其他库。

Netbeans包含库

就是这样,你现在已经准备好使用OpenCV!

概要

以下是安装OpenCV并将其与Netbeans结合使用所需完成的一般步骤:

  1. 用你的编译器编译OpenCV。
  2. 将包含DLL的目录添加到系统PATH(在我们的例子中是c:/ opencv / release / bin)。
  3. 将包含头文件的目录添加到项目的包含路径(在我们的例子中是:c:/ opencv / build / include)。
  4. 将包含已编译库的目录添加到项目的库路径(在我们的例子中为:c:/ opencv / release / lib)。
  5. 添加需要与项目链接的特定库(例如:libopencv_core240.dll.a)。

示例 – OpenCV中的“Hello World”

这是一个小例子程序,它在GUI窗口上绘制文本“Hello World:”)。 您可以使用它来检查您的安装是否正常工作。 编译并运行程序后,您应该看到以下窗口:

OpenCV Hello World

 #include "opencv2/opencv.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv; int main(int argc, char** argv) { //create a gui window: namedWindow("Output",1); //initialize a 120X350 matrix of black pixels: Mat output = Mat::zeros( 120, 350, CV_8UC3 ); //write text on the matrix: putText(output, "Hello World :)", cvPoint(15,70), FONT_HERSHEY_PLAIN, 3, cvScalar(0,255,0), 4); //display the image: imshow("Output", output); //wait for the user to press any key: waitKey(0); return 0; } 

这不适合我。 我花了几天在网上找到的每一个单独的教程,最后我编译我自己的二进制文件。 Everyting在这里描述: OpenVC 2.4.5,Eclipse CDT Juno,MinGW错误0xc0000005

经过许多试验和错误,我决定按照这个教程来编译我自己的二进制文件,因为似乎有太多的人抱怨预编译的二进制文件不适合他们。 Eclipse CDT Juno已经安装。

我的程序如下:

  1. 下载并安装MinGW并使用c:/ mingw / bin添加到系统PATH中
  2. http://www.cmake.org下载cmake并安装&#x5B83;
  3. 下载OpenCV2.4.5 Windows版本
  4. 安装/解压Opencv到C:\ OpenCV245PC \(README,index.rst和CMakeLists.txt与所有子文件夹一起)
  5. 运行CMake GUI工具,然后
  6. 选择C:\ OpenCV245PC \作为源
  7. 选择目标C:\ OpenCV245MinGW \ x86在哪里构建二进制文件
  8. 按配置按钮,选择MinGW Makefiles作为生成器。 窗口中有一些红色高亮显示,根据需要选择选项。
  9. 再次按下配置按钮。 配置现在完成了。
  10. 按“生成”按钮。
  11. 生成完成后退出程序。
  12. 退出Cmake程序。
  13. 运行命令行模式(cmd.exe)并转到目标目录C:\ OpenCV245MinGW \ x86
  14. 键入“mingw32-make”。 你会看到构建二进制文件的进度。 如果找不到该命令,则必须确保系统PATH已添加到c:/ mingw / bin中。 构建继续根据选择的选项完成。
  15. 在Windows系统路径(我的电脑>右键单击>属性>高级>环境变量>路径)添加目标的bin目录,C:\ OpenCV245MinGW \ x86 \ bin
  16. 重新启动计算机
  17. 转到Eclipse CDT IDE,使用示例OpenCV代码创建一个C ++程序(您可以使用本主题顶部的代码)。
  18. 转到Project> Properties> C / C ++ Build> Settings> GCC C ++ Compiler>包含并添加源代码OpenCV文件夹“C:\ OpenCV245PC \ build \ include”
  19. 转到Project> Properties> C / C ++ Build> Settings> MinGW C ++ Linker> Libraries,并添加到库(-l)一个接一个(这可能因项目而异,如果你喜欢,有些人只是你需要为你的项目的):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
  20. 将内置的OpenCV库文件夹“C:\ OpenCV245MinGW \ x86 \ lib”添加到库搜索路径(-L)中

您可以使用此代码来测试您的设置:

 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR); namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); imshow("MyWindow", img); waitKey(0); return 0; } 

不要忘记把图像放到C:/(或者你可能觉得合适的地方,只要确保eclipse已经读取了。

如果您安装了opencv 2.4.2,那么您需要将-lopencv_core240更改为-lopencv_core242

我犯了同样的错误。

在Windows 64位上是可行的:

  1. 下载opencv-3.0(beta) , MinGW (命令行工具);
  2. 将以上各自的bin文件夹添加到PATH var;
  3. 创建一个文件夹“释放”(可以是任何名字);
  4. 在创建的文件夹中,打开提示终端并执行以下命令;
  5. 复制并过去此命令

    cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\

  6. 执行这个命令mingw32-make

  7. 执行这个命令mingw32-make install

DONE

我一步一步地使用了这个指令,并且工作。

http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-eclipse-cdt-juno.html

正如@Nenad Bulatovic指出的那样,在添加库时要小心(第19步)。 在逐行添加每个库时,不应该添加任何尾随空格。 否则mingw去干。