zoukankan      html  css  js  c++  java
  • WIN10下使用MinGW编译安装运行OpenCV

    前言

        网上WINDOWS系统大多是用CMake+VS安装的OpenCV,但是VS写C/C++太麻烦,而且移植性差,于是笔者决定用MinGW64。相关该博文同时介绍了编译安装存在的问题,笔者将从简介绍步骤

    软件环境

    • windows10-64bit
    • MinGW64-gcc8.1.0
    • CMake 3.15.1
    • OpenCV 4.1.1

    安装步骤

     1. 安装CMake+MinGW64

         参考,注意添加系统环境变量

     2. 下载OpenCV

         上下载最新发行版的source文件,下载解压会得到一个"opencv-4.1.1",笔者将其改名为"sources",并移动到"D:SoftwareProOpenCV_MinGW"文件夹下,并同时新建"build"文件夹。

    3. 编译OpenCV

        打开 CMake-gui,sources和build文件夹配置如下,然后configure

    configure一次之后会变成红色,然后勾选WITH_OPENGL和ENABLE_CXX11(OpenCV4之后应该没这个选项),不勾选WITH_IPP、ENABLE_PRECOMPILED_HEADERS和WITH_OPENCL_D3D11_NV,最后configure再generate生成Makefile文件。注意后面安装的头文件和lib文件都会在下图红色线的路径。

    4. 安装OpenCV

        打开VS Code终端,cd 到D:SoftwareProOpenCV_MinGWuild,然后输入"mingw32-make -j 8"回车设置8线程加快安装速度,然后输入"mingw32-make install"回车安装。安装完毕就可以看到"D:SoftwareProOpenCV_MinGWuildinstall"下如下图

    然后新建Path环境变量”D:SoftwareProOpenCV_MinGWuildinstallx64mingwin“。

    5. 运行OpenCV实例

       笔者在"C:UsersJJ_OMENDesktopProjects est",新建了main.cpp, CMakeLists和build文件夹,并加了名称为"1.jpg"的图片,

    main.cpp

    #include <opencv.hpp>
    
    #include <iostream>  
    using namespace cv;
    using namespace std;
     
    int main()
    {
    	cout << "OpenCV Version: " << CV_VERSION << endl;
    	Mat img = imread("../1.jpg");
    	imshow("1440", img);
    	waitKey(0);
    	return 0;
    }

    CMakeLists.txt

    #设置cmake最低版本
    cmake_minimum_required(VERSION 3.2)
    
    #设置项目名称
    PROJECT(hello)
    
    #寻找OpenCV库
    FIND_PACKAGE(OpenCV REQUIRED)
    #打印调试信息
    #message(STATUS "version: ${OpenCV_VERSION}")
    #cmakemessage(STATUS "OpenCV_INCLUDE_DIRS = ${OpenCV_INCLUDE_DIRS}")
    #message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}")
    #message(STATUS "PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}")
    
    #包含项目头文件和OpenCV相关头文件路径
    INCLUDE_DIRECTORIES(
        ${PROJECT_SOURCE_DIR}
        #${OpenCV_INCLUDE_DIRS}
        #以下路径自行更改
        "D:/Software/Pro/OpenCV_MinGW/build/install/include/opencv2"
    
    )
    
    #设置源文件信息
    set(SRC
        ${PROJECT_SOURCE_DIR}/main.cpp
    )
    
    #编译可执行程序
    ADD_EXECUTABLE(hello ${SRC})
    
    #添加动态链接库
    TARGET_LINK_LIBRARIES(hello ${OpenCV_LIBS})
    

    然后在VS Code中CRTL+SHIFT+P输入"c/c++..."找到红色下划线那个

     配置如下

    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceFolder}/**",
                    "D:/Software/Pro/OpenCV_MinGW/build/install/include/opencv2/**",
                    "D:/Software/Pro/OpenCV_MinGW/build/install/include"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE"
                ],
                "compilerPath": "C:\mingw64\bin\gcc.exe",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "gcc-x64"
            },
            {
                "name": "Linux",
                "includePath": [
                    "${workspaceFolder}/**"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE"
                ],
                "compilerPath": "C:\mingw64\bin\gcc.exe",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "gcc-x64"
            }
        ],
        "version": 4
    }

    重点改的地方如下 

    也可以进入C/C++ edit configuration (UI)更改,这个自行百度

    以上配置好了之后,在终端cd到"C:UsersJJ_OMENDesktopProjects estuild",然后" cmake -G "MinGW Makefiles" ../ "或者"cmake . "生成makefile,然后输入"min" TAB补全"mingw32-make”,然后输入"hello"TAB补全,就可以看到输出结果了。 

  • 相关阅读:
    周记
    读书笔记
    我是一只IT小小鸟
    回车键完全替代模拟鼠标单击事件
    去除Flexgrid表格的隔行底色为白的样式
    Flexgrid中的sortable设为false的时候abbr属性也不存在的原因及解决办法
    Flexigrid列之间的拖拉线条在某些浏览器中不能很好地与栏目边缘重合解决方法介绍
    用基于openssl产生的密钥实现PHP和.NET端的RSA加解密互通
    CSS3轮播图
    淘宝放大镜
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13281749.html
Copyright © 2011-2022 走看看