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

flo*_*ree 34 c++ windows opencv mingw

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

flo*_*ree 61

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目录添加到系统路径

在System Variables部分,
选择Path(1),单击Edit ...(2),add C:\opencv\build\x86\mingw\bin(3)然后单击Ok.

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


2.安装MinGW编译器套件

我强烈建议您使用gcc(GNU Compiler Collection)来编译代码.gcc是Linux系统中广泛使用的编译器套件,MinGW是Windows的本机端口.

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

在MinGW安装中选择目录

选择要安装的"C编译器"和"C++编译器".

选择要安装的组件

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

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

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

gcc: fatal error: no input files
compilation terminated
Run Code Online (Sandbox Code Playgroud)

这样就完成了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;
}
Run Code Online (Sandbox Code Playgroud)

lena.jpg您喜欢的图像或任何图像放在与上述文件相同的目录中.打开命令行框并输入以下代码来编译代码:

g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg
Run Code Online (Sandbox Code Playgroud)

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

类型:

loadimg
Run Code Online (Sandbox Code Playgroud)

执行程序.结果:

你的第一个OpenCV程序的结果


4.从哪里去?

现在您的OpenCV环境已经准备就绪,下一步是什么?

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

  • 我按照你的指示,并使用loadimg.exe来构建,但是当我尝试执行它时它立即崩溃 - 异常代码= c0000005和错误模块= libstdc ++ - 6.dll.在eclipse中运行gdb会在libstdc ++中显示一个seg错误.关于为什么会这样的任何想法? (2认同)
  • 显然,不再包括mingw二进制文件.有关如何编译OpenCV的说明,请查看http://grauonline.de/wordpress/?page_id=449. (2认同)

Eya*_*lAr 17

@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(代表跨平台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.单击"生成"并等待生成makefile.完成该过程后,您应该看到"生成完成".从这一点开始,我们将不再需要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应该可用,这就是我们将包含它们的目录添加到系统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. 将包含头文件的目录添加到项目的include路径中(在我们的例子中: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;
}
Run Code Online (Sandbox Code Playgroud)


Nen*_*vic 13

这不适合我.我在网上找到的每一个教程都花了几天时间,最后我编译了自己的二进制文件.这里描述的是: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. 按Configure按钮,选择MinGW Makefiles作为生成器.窗口中有一些红色高光,您可以根据需要选择选项.
  9. 再次按"配置"按钮.配置现已完成.
  10. 按Generate按钮.
  11. 生成完成后退出程序.
  12. 退出Cmake程序.
  13. 运行命令行模式(cmd.exe)并转到目标目录C:\ OpenCV245MinGW\x86
  14. 输入"mingw32-make".您将看到构建二进制文件的进度.如果未找到该命令,则必须确保使用c:/ mingw/bin添加系统PATH.构建将根据所选选项继续完成.
  15. 在Windows系统路径(我的电脑>右键单击>属性>高级>环境变量>路径)中添加目标的bin目录,C:\ OpenCV245MinGW\x86\bin
  16. 重新启动计算机
  17. 转到Eclipse CDT IDE,使用示例OpenCV代码创建C++程序(您可以使用本主题顶部的代码).
  18. 转到项目>属性> C/C++生成>设置> GCC C++编译器>包含,并添加源OpenCV文件夹"C:\ OpenCV245PC\build\include"
  19. 转到项目>属性> C/C++构建>设置> MinGW C++链接器>库,并添加到库(-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).

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

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