36

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

4

7 回答 7

64

1.安装OpenCV 2.4.3

首先,从 sourceforge.net获取OpenCV 2.4.3 。它是一个自解压文件,因此只需双击该文件即可开始安装。将其安装在一个目录中,例如C:\.

OpenCV 自解压

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

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

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

您将看到如下所示的窗口:

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

在系统变量部分,
选择路径(1),单击编辑... (2),添加C:\opencv\build\x86\mingw\bin(3),然后单击确定

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


2.安装MinGW编译器套件

我强烈建议您使用 gcc (GNU Compiler Collection) 来编译您的代码。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!”了。程序。


3.编写示例代码

打开您的文本编辑器并键入下面的代码并将文件保存到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. 编写自己的代码。
于 2012-06-02T06:33:14.640 回答
21

@bsdnoobz 答案中的说明确实很有帮助,但没有让 OpenCV 在我的系统上运行。

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

我确实让它工作,并为编译和安装 OpenCV 以及配置 Netbeans 以使用它编写了一个综合指南。

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


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

  1. 让我的程序不会立即崩溃。
  2. 使 Netbeans 运行良好,尤其是让调试器工作的时间。

我阅读了许多教程和“操作方法”文章,但没有一篇是真正全面和透彻的。最终我成功地设置了环境;在使用了这个(很棒的)库一段时间后,我决定写这个小教程,希望能对其他人有所帮助。

本教程分为三个部分:

  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(代表 Cross-platform Make)是一种生成特定于您的编译器和平台的 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并按 Enter。这应该开始编译过程。
      MinGW 制作
      MinGW Make - 编译
    3. 编译完成后,OpenCV 的二进制文件就可以使用了。
    4. 为方便起见,我们应该将目录添加C:/opencv/release/bin 到系统 PATH中。这将确保我们的程序可以找到运行所需的 DLL。

配置 Netbeans

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

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

注意:为了进行调试,OpenCV DLL 应该可用,这就是我们将包含它们的目录添加到系统 PATH 的原因(上一节,步骤 5.4)。

首先,您应该验证 Netbeans 是否已正确配置以与 MinGW 一起使用。请查看下面的屏幕截图并验证您的设置是否正确(考虑根据您自己的安装更改路径)。另请注意 ,该make命令应来自 msys 而不是来自 Cygwin。

Netbeans MinGW 配置

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

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 你好世界

#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;
}
于 2012-10-23T20:02:48.893 回答
13

这对我不起作用。我花了几天时间学习在网上找到的每一个教程,最后我编译了自己的二进制文件。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并安装
  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 系统 PATH(我的电脑 > 右键单击​​ > 属性 > 高级 > 环境变量 > 路径)中添加目标的 bin 目录,C:\OpenCV245MinGW\x86\bin
  16. 重启电脑
  17. 转到 Eclipse CDT IDE,使用示例 OpenCV 代码创建一个 C++ 程序(您可以使用本主题顶部的代码)。
  18. 转到 Project > Properties > C/C++ Build > Settings > GCC C++ Compiler > Includes,然后添加源 OpenCV 文件夹“C:\OpenCV245PC\build\include”
  19. 转到项目 > 属性 > C/C++ 构建 > 设置 > MinGW C++ 链接器 > 库,然后逐个添加到库 (-l)(这可能因项目而异,您可以根据需要添加所有这些或其中一些只是您项目所需的): op​​encv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_video4opencv_video245opencv_stitch2
  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 有读取权限。

于 2013-07-01T11:19:54.987 回答
3

如果您安装了 opencv 2.4.2 那么您需要-lopencv_core240-lopencv_core242

我犯了同样的错误。

于 2012-07-30T07:34:43.740 回答
2

在 Windows 64 位上它可以工作:

  1. 下载opencv-3.0 (beta) , MinGW (命令行工具);
  2. 将上述相应的 bin 文件夹添加到 PATH var;
  3. 在 ; 中创建一个文件夹“release”(可以是任何名称);
  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

完毕

于 2015-04-24T18:11:03.953 回答
1

我一步一步地使用了说明,它奏效了。

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

于 2014-02-23T19:42:07.423 回答
0

正如@Nenad Bulatovic 所指出的,在添加库时必须小心(第 19 步)。在逐行添加每个库时,不应添加任何尾随空格。否则 mingw 会失控。

于 2014-11-26T08:07:42.303 回答