1.下载opencv 2.3

http://sourceforge.net/projects/opencvlibrary/files/ 下个opencv-win版本吧 至于版本号就随意吧,我选的是2.3。  这个是那个解压包的地址:http://ncu.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.3/OpenCV-2.3.0-win-superpack.exe  https://github.com/Itseez/opencv 这个github也可以下载 。

2.下载Mingw

什么版本都可以http://heanet.dl.sourceforge.net/project/mingw/OldFiles/MinGW-5.0.2.exe  我是使用codeblocks 里面的MinGW来使用的。

3.移植opencv到MinGW中

mingw-env.bat里面大概就是这样的,那个F:\MinGW\vim7.4是一个编辑器来的。如果没有可以不写。

@set PATH=F:\MinGW\bin;F:\MinGW\vim7.4;
cmd

我把openCV2.3解压到C盘根目录下,把C:\OpenCV2.3\opencv\include\opencv 里面的头文件复制到..\mingw\include中

opencv\include\opencv 
2011// : , cv.h
// : , cv.hpp
// : , cvaux.h
// : , cvaux.hpp
// : , cvwimage.h
// : , cxcore.h
// : , cxcore.hpp
// : , cxeigen.hpp
// : cxmisc.h
// : , highgui.h
// : , ml.h

还有C:\OpenCV2.3\build\include\opencv2目录下所有的文件夹都复制到..\mingw\include 中

build\include\opencv2
// : <DIR> .
// : <DIR> ..
// : <DIR> calib3d
// : <DIR> contrib
// : <DIR> core
// : <DIR> features2d
// : <DIR> flann
// : <DIR> gpu
// : <DIR> highgui
// : <DIR> imgproc
// : <DIR> legacy
// : <DIR> ml
// : <DIR> objdetect
// : , opencv.hpp
// : <DIR> ts
// : <DIR> video
个文件 , 字节
个目录 ,,, 可用字节

注意此时的opencv2这个目录是要有的。 目录是这样的 ..\mingw\include\opencv2 。

4.将链接库*.a移到mingw下

根据不同的平台选择 移到..\mingw\lib

C:\OpenCV2.\build\x86\mingw\lib                                    ..
// : , libopencv_calib3d230.dll.a
// : , libopencv_contrib230.dll.a
// : , libopencv_core230.dll.a
// : , libopencv_features2d230.dll.a
// : , libopencv_flann230.dll.a
// : , libopencv_gpu230.dll.a
// : , libopencv_highgui230.dll.a
// : , libopencv_imgproc230.dll.a
// : , libopencv_legacy230.dll.a
// : , libopencv_ml230.dll.a
// : , libopencv_objdetect230.dll.a
// : , libopencv_video230.dll.a

注意如果是Window平台的话还要将bin下的移到 ..\mingw\bin 下

C:\OpenCV2.\build\x86\mingw\bin
// : , libopencv_calib3d230.dll
// : , libopencv_contrib230.dll
// : ,, libopencv_core230.dll
// : , libopencv_features2d230.dll
// : , libopencv_flann230.dll
// : , libopencv_gpu230.dll
// : ,, libopencv_highgui230.dll
// : ,, libopencv_imgproc230.dll
// : ,, libopencv_legacy230.dll
// : , libopencv_ml230.dll
// : , libopencv_objdetect230.dll
// : , libopencv_video230.dll

为什么要这样,学了linux和Windows动态静态链接库就知道了。
到这里就基本完成了配置了。

下面是一个简单的基于opencv的小程序

 #include "cv.h"
#include "highgui.h"
#include <iostream> using namespace std;
using namespace cv; int main( int argc, char** argv )
{
IplImage* pImg; //声明IplImage指针
int a;
//载入图像
if( argc == && (pImg = cvLoadImage( argv[], )) != )
{
cvNamedWindow( "Image", );//创建窗口
cvShowImage( "Image", pImg );//显示图像
cvWaitKey(); //等待按键 cvDestroyWindow( "Image" );//销毁窗口
cvReleaseImage( &pImg ); //释放图像
return ;
}
return -;
}

保存为main.cpp文件 建立一个Makefile文件
如果你环境配的不准确的话可以通过-I 加头文件目录 -L 加静态链接库

main:
g++ -I C:\OpenCV2.\opencv\include\opencv -I C:\OpenCV2.\build\include -L C:\OpenCV2.\build\x86\mingw\bin main.cpp -lopencv_calib3d230 -lopencv_contrib230 -lopencv_core230 -lopencv_features2d230 -lopencv_flann230 -lopencv_gpu230 -lopencv_highgui230 -lopencv_imgproc230 -lopencv_legacy230 -lopencv_ml230 -lopencv_objdetect230 -lopencv_video230 -o main.exe

标准版

main:
g++ main.cpp -lopencv_calib3d230 -lopencv_contrib230 -lopencv_core230 -lopencv_features2d230 -lopencv_flann230 -lopencv_gpu230 -lopencv_highgui230 -lopencv_imgproc230 -lopencv_legacy230 -lopencv_ml230 -lopencv_objdetect230 -lopencv_video230 -o main.exe

我自己测试的时候那个 -L参数还是要的。具体应该是Window下gcc对链接库的映射吧,就是吧*.dll --> *.a 的原因吧。

然后make就能编译了。
这样就完成了吗?能编译不代表能执行。

我就出现几个错误

(1). make错误 可能是make的版本太低或是x64和x86的区别吧。
(2). libiconv-2.dll libintl-8.dll 文件未找到。 不用问直接下载,前面的几个网站有单个文件下载的。
(3). 最关键的错误: 无法定位程序输入点 _XXXXXXXXX 于动态链接库libstdc++-6.dll上。这个是由于编译opencv时用的C++版本和当前mingw用的C++版本不一样的错误。具体opencv的版本要看OpenCV2.3\readme.txt文件,里面有这一句"32-bit DLLs have been built using official MinGW 4.5.2" 表示要用4.5.2的版本。难道我们要下载个4.5.2一样的版本。其实也不用只要到sourceforge.net上的mingw中下个对应版本的libstdc++-6.dll文件,然后替换mingw\bin\libstdc++-6.dll

5. 感想,不知道怎么说呢,我就是对这种在命令行下编译比较感兴趣。

Mingw opencv Windows下命令行运行的更多相关文章

  1. windows下命令行模式中cd命令无效的原因

    当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到 D:\MySql\mysql-5.7.19-winx64\bin ...

  2. windows下命令行利器---Cmder(安装,中文乱码,配置右键菜单)

    很多人都是在win下开发的,这样就会出现,经常需要命令行操作,而win cmd命令和linux命令有很大差异,导致大家很难受,今天给大家介绍一个win下命令行的利器-Cmder 一.先看一下它的容颜 ...

  3. 转:windows下命令行工具

    转自: http://www.cnblogs.com/haochuang/p/5593411.html Windows下CMD不好用,远没有Linux,或者一些SSH工具用起来方便.其实Windows ...

  4. windows 下命令行启动停止mysql

    MySQL比较好玩一点就是它可以用多种方式启动,当然它也可以用多种方式关闭.下面我就mysql的几种启动方式简单的谈一谈,希望可以给大家提供一些参考. 第一种,用mysqld-nt来启动. 在没有进行 ...

  5. 在 Linux/windows下 命令行中使用和执行 PHP 代码[交互式php]

    [注释]在ubuntu下,升级php到7.1版本,虽然提示的是Interactive mode enabled, 但实际上可以直接书写命令,和interactive shell效果一样. 一:wind ...

  6. windows下命令行cmder工具

    windows下系统自带的命令行工具,实在是太丑了,输入命令后,有时排版乱七八糟,而且使用惯liunx系统的命令后,实在是不能够接受,这么蹩脚的工具:为此我给大家推荐一款实用的开源工具cmder 下载 ...

  7. go语言执行windows下命令行的方法

    转自:http://www.jb51.net/article/61727.htm 在golang里执行windows下的命令行,例如在golang里面调用 del d:\a.txt 命令 packag ...

  8. windows下命令行设置静态IP

    windows 10 预览版出现无法设置静态IP的bug,只能通过命令行进行设置,开启powershell,然后执行下列的命令即可 下面的"以太网 3" 为你设置的网卡的网卡名称, ...

  9. mysql在windows下命令行启动与关闭服务

    一.命令行关闭与启动服务的命令: 二.运行cmd的命令行程序时,必须以管理员身份运行.否则会出现如下提示: 三.mysql5.7版本的服务名一般默认为mysql57,因此如果使用服务名mysql,那么 ...

随机推荐

  1. Jmeter相关

    关于Jmeter,这里有一篇文章可以看看:http://www.cnblogs.com/TankXiao/p/4045439.html 给有需要的同学.

  2. SQL:1999基本语法(学习笔记)

    SQL:1999基本语法 SELECT [DISTINCT] * | 列名称 [AS]别名,........ FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]| [NATURAL ...

  3. Excel还是那些事

        文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  4. 1z0-052 q209_8

    8: Note the following structures in your database server: 1. Extents 2. OS Blocks 3. Tablespace 4. S ...

  5. FIS3 构建 工程化

    1.安装 npm install -g fis3 //插件 npm install -g fis3-hook-relative npm install -g fis3-preprocessor-aut ...

  6. Access denied with payslip工资条非同部门员工不能创建bug

    Access Denied The requested operation cannot be completed due to security restrictions. Please conta ...

  7. HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402 Problem Description Teacher Mai is in a maze wit ...

  8. JDK1.7的一些新特性

    整理了几条对开发可能用到概率高的 1.swicth支持对String的判断:(以前只能支持Int及以下的) switch (s) { case "1": break; case & ...

  9. Eclipse常用且不易记快捷键

    大小写转换:CTRL+SHIFT+X,Y 复制行:CTRL+ALT+↑,↓(部分无法使用) 查看继承关系:CTRL+T 直接查看系统源码:CTRL+SHIFT+T 查看所有快捷键:CTRL+SHIFT ...

  10. js ie下有效 showModalDialog 、showModelessDialog

    <input type="button" value="打开选择输入框"/> <script type="text/javascri ...