如何安装OpenCV 2.4并使用MinGW编译我的代码?
答案 0 :(得分:62)
<强> 1。安装OpenCV 2.4.3
首先,从sourceforge.net获取OpenCV 2.4.3。它是一个自我文件解压缩,所以只需双击该文件即可开始安装。将其安装在目录中,例如 C:\
。
等到所有文件都被解压缩。它将创造一个新的
目录 C:\opencv
,其中包含OpenCV头文件,库,代码示例等。
现在您需要将 C:\opencv\build\x86\mingw\bin
目录添加到系统PATH中。该目录包含运行代码所需的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 installer,然后双击开始安装。只需按照向导选择要安装的目录,例如 C:\MinGW
。
选择要安装的“C编译器”和“C ++编译器”。
安装程序将从互联网上下载一些软件包,因此您必须等待一段时间。安装完成后,使用之前描述的步骤将 C:\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
执行程序。结果:
<强> 4。从哪里开始?
现在您的OpenCV环境已经准备就绪,接下来会发生什么?
C:\opencv\samples\cpp
。答案 1 :(得分:18)
@bsdnoobz回答中的说明确实很有帮助,但没有让OpenCV在我的系统上运行。
显然我需要自己编译库以使其工作,而不是指望预先构建的二进制文件(这导致我的程序崩溃,可能是由于与我的系统不兼容)。
我确实让它发挥作用,并为 compiling and installing OpenCV, and configuring Netbeans to work with it.
撰写了一份综合指南为了完整起见,下面也提供了它。
当我第一次使用OpenCV时,遇到了两个主要困难:
我阅读了许多教程和#34;操作方法&#34;文章,但没有一个真的很全面 彻底的。最终我成功地建立了环境;之后 在使用这个(伟大的)库时,我决定写这个小教程, 希望有助于他人。
本教程的三个部分:
我使用的环境: Windows 7,OpenCV 2.4.0,Netbeans 7和MinGW 3.20(带编译器gcc 4.6.2)。
<强>假设强>: 您已在系统上安装了MinGW和Netbeans。
下载OpenCV时,存档实际上已包含预构建 &#39; build&#39;中的二进制文件(已编译的库和DLL&#39;)夹。起初,我 尝试使用这些二进制文件,假设有人已经完成了这项工作 为我编译。那没用。
最终我想我必须在我自己的系统上编译整个库 为了让它正常工作。
幸运的是,感谢CMake,编译过程非常简单。 CMake的 (代表跨平台制作)是一种生成特定文件的工具 到您的编译器和平台。我们将使用CMake来配置我们的 构建和编译设置,生成&#39; makefile&#39;,然后编译 库。
步骤如下:
c:/opencv/
。c:/opencv/
。c:/opencv/release
c:/opencv/release/
。mingw32-make
并按Enter键。这应该开始编译
流程。C:/opencv/release/bin
到系统路径。这将确保我们的程序可以找到
需要DLL才能运行。应该告诉Netbeans在哪里找到头文件和编译 库(在上一节中创建)。
需要头文件有两个原因:编译和代码 完成。链接阶段需要编译库。
注意:为了使调试工作,OpenCV DLL应该可用, 这就是我们将包含它们的目录添加到系统PATH的原因 (上一节,第5.4步)。
首先,您应该验证Netbeans是否配置正确才能使用
MinGW的。请参阅下面的屏幕截图并验证您的设置是否正确
(根据您自己的安装考虑路径变化)。 另请注意
make
命令应该来自msys,而不是来自Cygwin。
接下来,对于您在Netbeans中创建的每个新项目,您应该定义 include path(包含头文件的目录),库 路径和您打算使用的特定库。右键单击该项目 &#39;项目中的名称&#39;窗格,然后选择&#39;属性&#39;。添加包含路径 (根据您自己的安装修改路径):
添加库路径:
添加您要使用的特定库。这些库将是
在链接阶段动态链接到您的程序。通常你需要
core
库加上任何其他库,根据具体需要
你的计划。
就是这样,您现在可以使用OpenCV了!
以下是安装OpenCV和安装OpenCV所需完成的一般步骤 与Netbeans一起使用:
这是一个小例子程序,用于绘制文本&#34; Hello World:)&#34;在GUI上 窗口。您可以使用它来检查您的安装是否正常工作。后 编译并运行程序,您应该看到以下窗口:
#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。
我的程序如下:
您可以使用此代码测试您的设置:
#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上它可以工作:
复制并通过此命令
cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\
执行此命令mingw32-make
执行此命令mingw32-make install
完成强>
答案 5 :(得分:1)
我一步一步地使用了这些说明并且有效。
http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-eclipse-cdt-juno.html
答案 6 :(得分:0)
正如@Nenad Bulatovic指出的那样,在添加图书馆时必须小心(第19步)。在逐行添加每个库时,不应添加任何尾随空格。否则mingw会乱七八糟。