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