zoukankan      html  css  js  c++  java
  • Mingw opencv Windows下命令行运行

    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:MinGWvim7.4是一个编辑器来的。如果没有可以不写。

    @set PATH=F:MinGWin;F:MinGWvim7.4;
    cmd


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

    opencvincludeopencv 
    2011
    /02/10 05:41 3,413 cv.h 2011/02/10 05:41 2,411 cv.hpp 2011/02/10 05:41 2,850 cvaux.h 2011/02/10 05:41 2,346 cvaux.hpp 2011/02/10 05:41 2,192 cvwimage.h 2011/02/10 05:41 2,518 cxcore.h 2011/02/10 05:41 2,423 cxcore.hpp 2011/02/10 05:41 2,266 cxeigen.hpp 2011/02/10 05:41 110 cxmisc.h 2011/02/10 05:41 2,306 highgui.h 2011/02/10 05:41 2,189 ml.h

    还有C:OpenCV2.3uildincludeopencv2目录下所有的文件夹都复制到..mingwinclude 中

    buildincludeopencv2
    2011/07/04  10:51    <DIR>          .
    2011/07/04  10:51    <DIR>          ..
    2011/07/04  10:51    <DIR>          calib3d
    2011/07/04  10:51    <DIR>          contrib
    2011/07/04  10:51    <DIR>          core
    2011/07/04  10:51    <DIR>          features2d
    2011/07/04  10:51    <DIR>          flann
    2011/07/04  10:51    <DIR>          gpu
    2011/07/04  10:51    <DIR>          highgui
    2011/07/04  10:51    <DIR>          imgproc
    2011/07/04  10:51    <DIR>          legacy
    2011/07/04  10:51    <DIR>          ml
    2011/07/04  10:51    <DIR>          objdetect
    2011/02/10  05:41             2,760 opencv.hpp
    2011/07/04  10:51    <DIR>          ts
    2011/07/04  10:51    <DIR>          video
                   1 个文件          2,760 字节
                  15 个目录 17,730,686,976 可用字节

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

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

    根据不同的平台选择 移到..mingwlib

    C:OpenCV2.3uildx86mingwlib                                    ..
    2011/07/04  10:48           232,344 libopencv_calib3d230.dll.a
    2011/07/04  10:48           222,936 libopencv_contrib230.dll.a
    2011/07/04  10:49           473,304 libopencv_core230.dll.a
    2011/07/04  10:49           485,612 libopencv_features2d230.dll.a
    2011/07/04  10:49            23,432 libopencv_flann230.dll.a
    2011/07/04  10:49           308,064 libopencv_gpu230.dll.a
    2011/07/04  10:49           163,976 libopencv_highgui230.dll.a
    2011/07/04  10:49           303,748 libopencv_imgproc230.dll.a
    2011/07/04  10:49           326,004 libopencv_legacy230.dll.a
    2011/07/04  10:49           289,692 libopencv_ml230.dll.a
    2011/07/04  10:49           247,748 libopencv_objdetect230.dll.a
    2011/07/04  10:49           169,956 libopencv_video230.dll.a

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

    C:OpenCV2.3uildx86mingwin
    2011/07/04  10:48           678,400 libopencv_calib3d230.dll
    2011/07/04  10:48           279,040 libopencv_contrib230.dll
    2011/07/04  10:48         1,755,648 libopencv_core230.dll
    2011/07/04  10:48           913,408 libopencv_features2d230.dll
    2011/07/04  10:48            22,016 libopencv_flann230.dll
    2011/07/04  10:48           463,360 libopencv_gpu230.dll
    2011/07/04  10:48         1,206,784 libopencv_highgui230.dll
    2011/07/04  10:48         1,574,912 libopencv_imgproc230.dll
    2011/07/04  10:48         1,157,120 libopencv_legacy230.dll
    2011/07/04  10:48           490,496 libopencv_ml230.dll
    2011/07/04  10:48           433,664 libopencv_objdetect230.dll
    2011/07/04  10:48           296,960 libopencv_video230.dll

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

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

     1 #include "cv.h"
     2 #include "highgui.h"
     3 #include <iostream>
     4 
     5 using namespace std;
     6 using namespace cv;
     7 
     8 int main( int argc, char** argv )
     9 {
    10     IplImage* pImg; //声明IplImage指针
    11     int a;
    12     //载入图像
    13     if( argc == 2 && (pImg = cvLoadImage( argv[1], 1)) != 0 )
    14     {
    15         cvNamedWindow( "Image", 1 );//创建窗口
    16         cvShowImage( "Image", pImg );//显示图像
    17         cvWaitKey(0); //等待按键
    18 
    19         cvDestroyWindow( "Image" );//销毁窗口
    20         cvReleaseImage( &pImg ); //释放图像
    21         return 0;
    22     }
    23     return -1;
    24 }

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

    main:
        g++ -I C:OpenCV2.3opencvincludeopencv -I C:OpenCV2.3uildinclude -L C:OpenCV2.3uildx86mingwin 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 eadme.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文件,然后替换mingwinlibstdc++-6.dll

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

  • 相关阅读:
    【Cloud Foundry】Could Foundry学习(二)——核心组件分析
    POJ 1789-Truck History
    设置静态IP
    oracle切割字符串后以单列多行展示
    SQL server语句练习
    hdu 3308 LCIS(线段树)
    HDU 1556 Color the Ball 线段树 题解
    CSipSimple最新版本号
    奢侈品行业-新手专题-亿邦动力网
    单身潮_百度百科
  • 原文地址:https://www.cnblogs.com/wunaozai/p/3362550.html
Copyright © 2011-2022 走看看