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

时间:2012-06-02 06:33:14

标签: c++ windows opencv mingw

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

7 个答案:

答案 0 :(得分:62)

<强> 1。安装OpenCV 2.4.3

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

OpenCV self-extracting

等到所有文件都被解压缩。它将创造一个新的 目录 C:\opencv ,其中包含OpenCV头文件,库,代码示例等。

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

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

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

Add OpenCV DLL directory to system path

在“系统变量”部分,
选择路径(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 installer,然后双击开始安装。只需按照向导选择要安装的目录,例如 C:\MinGW

Select directory in MinGW installation

选择要安装的“C编译器”和“C ++编译器”。

Select components to be installed

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

Add MinGW bin directory to system path

要测试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

执行程序。结果:

The result of your first OpenCV program


<强> 4。从哪里开始?

现在您的OpenCV环境已经准备就绪,接下来会发生什么?

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

答案 1 :(得分:18)

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

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

我确实让它发挥作用,并为 compiling and installing OpenCV, and configuring Netbeans to work with it.

撰写了一份综合指南

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


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

  1. 让我的程序不要立即崩溃。
  2. 让Netbeans玩得很好,特别是让调试器工作时间。
  3. 我阅读了许多教程和#34;操作方法&#34;文章,但没有一个真的很全面 彻底的。最终我成功地建立了环境;之后 在使用这个(伟大的)库时,我决定写这个小教程, 希望有助于他人。

    本教程的三个部分:

    1. 编译和安装OpenCV。
    2. 配置Netbeans。
    3. 示例程序。
    4. 我使用的环境: Windows 7,OpenCV 2.4.0,Netbeans 7和MinGW 3.20(带编译器gcc 4.6.2)。

      <强>假设: 您已在系统上安装了MinGW和Netbeans。

      编译和安装OpenCV

      下载OpenCV时,存档实际上已包含预构建 &#39; build&#39;中的二进制文件(已编译的库和DLL&#39;)夹。起初,我 尝试使用这些二进制文件,假设有人已经完成了这项工作 为我编译。那没用。

      最终我想我必须在我自己的系统上编译整个库 为了让它正常工作。

      幸运的是,感谢CMake,编译过程非常简单。 CMake的 (代表跨平台制作)是一种生成特定文件的工具 到您的编译器和平台。我们将使用CMake来配置我们的 构建和编译设置,生成&#39; makefile&#39;,然后编译 库。

      步骤如下:

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

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

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

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

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

        Netbeans MinGW Configuration

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

        Netbeans Project Include Path

        添加库路径:

        Netbeans Libraries Path

        添加您要使用的特定库。这些库将是 在链接阶段动态链接到您的程序。通常你需要 core库加上任何其他库,根据具体需要 你的计划。

        Netbeans Include Libraries

        就是这样,您现在可以使用OpenCV了!

        摘要

        以下是安装OpenCV和安装OpenCV所需完成的一般步骤 与Netbeans一起使用:

        1. 使用编译器编译OpenCV。
        2. 将包含DLL的目录添加到系统PATH中(在我们的示例中: C:/ OpenCV的/释放/ bin)中
        3. 将包含头文件的目录添加到项目的include中 路径(在我们的例子中:c:/ opencv / build / include)。
        4. 将包含已编译库的目录添加到项目中 库路径(在我们的例子中:c:/ opencv / release / lib)。
        5. 添加您需要与项目关联的特定库(for 例如:libopencv_core240.dll.a)。
        6. 示例 - &#34; Hello World&#34;使用OpenCV

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

          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;
          }
          

答案 2 :(得分:13)

这对我不起作用。我在网上找到的每一个教程都花了几天时间,最后我编译了自己的二进制文件。这里描述了所有内容:OpenVC 2.4.5, eclipse CDT Juno, MinGW error 0xc0000005

经过多次试验和错误后,我决定关注this教程并编译自己的二进制文件,因为似乎有太多人抱怨预编译的二进制文件不适用于它们。已经安装了Eclipse CDT Juno。

我的程序如下:

  1. 下载并安装MinGW并添加到系统PATH C:/ MinGW的/ bin中
  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. 按Configure按钮,选择MinGW Makefiles作为生成器。窗口中有一些红色高光,您可以根据需要选择选项。
  9. 再次按配置按钮 。现在已完成配置。
  10. 按“生成”按钮。
  11. 生成完成后退出程序。
  12. 退出Cmake计划。
  13. 运行命令行模式(cmd.exe)并转到目标  目录C:\ OpenCV245MinGW \ x86
  14. 输入“mingw32-make”。你会看到建筑的进步  二进制文件。如果找不到该命令,则必须确保该命令  系统PATH添加了c:/ mingw / bin。构建继续  根据所选择的选项完成。
  15. 在Windows系统路径中(我的电脑&gt;右键单击&gt;  属性&gt;高级&gt;环境变量&gt;路径)添加  目的地的bin目录,C:\ OpenCV245MinGW \ x86 \ bin
  16. RESTART COMPUTER
  17. 转到Eclipse CDT IDE,使用示例OpenCV代码创建C ++程序(您可以使用本主题顶部的代码)。
  18. 转到项目&gt;属性&gt; C / C ++ Build&gt;设置&gt; GCC C ++编译器&gt;包括,并添加 源OpenCV文件夹“C:\ OpenCV245PC \ build \ include”
  19. 转到项目&gt;属性&gt; C / C ++ Build&gt;设置&gt; MinGW C ++ Linker&gt;库,并添加到库(-l) ONE BY ONE(这可能因项目而异,如果您愿意,可以添加所有这些,或者只添加您需要的库中的一些)你的项目):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)
  21. 您可以使用此代码测试您的设置:

    #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已经阅读过了。

答案 3 :(得分:4)

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

我犯了同样的错误。

答案 4 :(得分:2)

在Windows 64bits上它可以工作:

  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

  8. 完成

答案 5 :(得分:1)

答案 6 :(得分:0)

正如@Nenad Bulatovic指出的那样,在添加图书馆时必须小心(第19步)。在逐行添加每个库时,不应添加任何尾随空格。否则mingw会乱七八糟。