OPENCV 在MINGW 环境下的编译

本文档详细记录了如何在MINGW环境下编译OpenCV的过程,包括下载MINGW和MSYS、配置环境、安装依赖库、编译FFMPEG、JPEG、JASPER、TIFF等图像库,以及解决编译过程中遇到的问题。虽然过程中遇到了一些挑战,如HIGHGUI/window_gtk.cpp的编译问题和图像I/O问题,但最终成功完成了编译并进行了测试。遗留问题包括JPEG读取和保存、视频处理及FFMPEG的使用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为某种原因,需要在MINGW下编译OPENCV,本以为是一个比较简单的事情,孰知竟然也陆陆续续花了不少的精力,即使到现在这个地步,也还有部分不甚满意的地方。综合看,OPENCV的的正常运行需要很多库的支持。在MS的VC++和正常的LINUX发布版本下,这些支持都是默认的,而在MINGW 下,却需要一一提供,因此也颇费一番周折,先把过程列举如下,希望能够今后做同样事情的人有所裨益。

第1步:下载 MINGW 和 MSYS

    * 下载的版本是:MSYS-1.0.10.exemsysDTK-1.0.1.exe 和 MinGW-5.1.4.exe。
    * 按照下载软件的基本提示,分别安装到 c:/mingw 和 c:/msys/1.0运行
    * 问题:直接运行 msys.bat 出现问题,控制台窗口无法启动。所有的命令都出现                       " Couldn't reserve space for cygwin's heap"      
      上网查找问题,解决方法是用 rebase 进行处理。 具体方法是:
         - 启动CMD命令行程序,在DOS窗口下,依次运行:
           cd c:/msys/1.0/bin
           rebase -b 0x30000000 msys-1.0.dll
    * 编辑 /etc/fstab,写入下面的映射关系:
         c:/mingw /mingw 
         c:/mingw /usr/local
    * 编辑 /etc/profile,在文件末尾增加下面几行:
        #进入的缺省目录是根目录            
        cd "/"               
        #列举目录时有颜色信息           
        alias ls='ls --color'           
        alias dir='ls --color'
  
第2步:下载 OPENCV V1.0 FOR LINUX

    * 下载OPENCV1.0 for linux 解压到/home/opencv(就是 c:/msys/1.0/home目录下)
    * 从第3步开始到开始配置OPENCV,均是做一些准备工作以及配置必要的支持库。

第3步:下载pkg-config

   下载地址为:http://rt.openfoundry.org/Foundry/Project/Download/。将二进制的解压包解压拷贝到 c:/mingw目录下;

第4步:安装 GTK,保证对图像I/O的支持
 
    * 下载下面的文件,解压后释放到 C:/MinGW 目录下
    * pkg-config-0.23.zip
    * libiconv-1.9.1.bin.woe32.zip
    * gettext-0.14.5.zip
    * gettext-dev-0.14.5.zip
    * pango-1.16.4.zip
    * pango-dev-1.16.4.zip
    * cairo-1.4.14.zip
    * cairo-dev-1.4.0.zip
    * zlib-1.2.3.zip
    * libpng-1.2.8.zip
    * libpng-dev-1.2.8.zip
    * atk-1.20.0.zip
    * atk-dev-1.20.0.zip
    * gtk+-2.12.8.zip
    * gtk+-dev-2.12.8.zip
    * libintl-0.14.4-lib.zip

第5步:安装编译FFMPEG

    * 下载地址是:http://download.chinaunix.net。将下载的ffmpeg-0.4.9- p20060302.tar.bz2 解压到/home/ffmpeg 下,
    * 编译
        ./configure  --enable-memalign-hack
        make
        make test
        make install
    * 注意这个包直接安装到 c:/program files/ffmpeg 中,需要把该目录下的 ./lib 和 ./include 目录移动到 c:/mingw (也就是 /usr/local)下, ffmpeg.exe 移到 c:/mingw/bin 下。
   
第6步:编译JPEG/JASPER/TIFF 等图像库

    * 下载 jpegsrc.v6b.tar.gz,jasper-1.900.1.zip,tiff-3.8.2-3-src.tar.bz2
    * 依次安装说明编译、测试、安装。

第7步:拷贝GTK所需要的运行库

iconv.dll
intl.dll
libatk-1.0-0.dll
libgdk-win32-2.0-0.dll
libgdk_pixbuf-2.0-0.dll
libgtk-win32-2.0-0.dll
libiconv2.dll
libpango-1.0-0.dll
libpangowin32-1.0-0.dll

第8步:编译 OPENCV

    * 运行配置文件:
./configure --without-carbon  --without-quicktime --without-1394libs  --without-python

--without-swig --enable-static --disable-shared --disable-apps
    * 配置参数定义是
       --without-gtk:忽略gtk+2.0 windows
       --without-carbon: 不使用Mac OS上的X库
       --without-quicktime
       --without-1394libs
       --without-python
       --without-swig
       --enable-static :生成静态库
       --disable-shared:不生成动态库
    * 配置的运行结果如下

$ ./configure -
# OpenCV-MinGW-Build MinGW version of OpenCV compiled on Windows. ## [OpenCV 3.4.1](https://github.com/huihut/OpenCV-MinGW-Build/tree/OpenCV-3.4.1) ``` git clone -b OpenCV-3.4.1 git@github.com:huihut/OpenCV-MinGW-Build.git ``` ## [OpenCV 3.3.1](https://github.com/huihut/OpenCV-MinGW-Build/tree/OpenCV-3.3.1) ``` git clone -b OpenCV-3.3.1 git@github.com:huihut/OpenCV-MinGW-Build.git ``` ## Compiling Environment * Windows-10-64bit * MinGW-5.3.0-32bit * CMake-3.9.2 ## How to compile OpenCV * [wiki.qt . How to setup Qt and openCV on Windows](https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows) * [blog.huihut . OpenCV使用CMake和MinGW编译安装及其在Qt配置运行](https://blog.huihut.com/2017/12/03/CompiledOpenCVRunInQt/) ## Using OpenCV in Qt Add OpenCV library file and include path to Qt `.pro` file. * My version of OpenCV : `OpenCV 3.3.1` * My OpenCV path : `E:\OpenCV_3.3.1\OpenCV-MinGW-Build` So the configuration is as follows (**You need to modify it according to your OpenCV.**) : ``` win32 { INCLUDEPATH += E:\OpenCV_3.3.1\OpenCV-MinGW-Build\include LIBS += E:\OpenCV_3.3.1\OpenCV-MinGW-Build\bin\libopencv_*.dll } ``` or ``` win32 { INCLUDEPATH += E:\OpenCV_3.3.1\OpenCV-MinGW-Build\include LIBS += -LE:\OpenCV_3.3.1\OpenCV-MinGW-Build\bin \ -llibopencv_calib3d331 \ -llibopencv_core331 \ -llibopencv_dnn331 \ -llibopencv_features2d331 \ -llibopencv_flann331 \ -llibopencv_highgui331 \ -llibopencv_imgcodecs331 \ -llibopencv_imgproc331 \ -llibopencv_ml331 \ -llibopencv_objdetect331 \ -llibopencv_photo331 \ -llibopencv_shape331 \ -llibopencv_stitching331 \ -llibopencv_superres331 \ -llibopencv_video331 \ -llibopencv_videoio331 \ -llibopencv_videostab331 } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值