C++ OpenCV编译安装教程

news2025/2/26 17:59:39

文章目录

    • 环境说明
    • Cmake编译配置
      • 编译前
      • 配置编译选项
      • 开始正式编译
      • 安装
    • 编写代码测试
    • 参考文章

环境说明

win10 + MinGW64 + Cmake

下载mingw64 (版本:12.1.0 posix-seh)

image-20230302161954389

下载Cmake (版本3.17.5)

注:mingw64和cmake下载安装完成后记得把bin目录添加到【环境变量】,如:

image-20230513095456699

下载opencv (版本4.6.0,下载后双击exe,选择目录进行解压即可)

GitHub加速链接(复制下载链接后在链接前面添加https://gh.flyinbug.top/gh/即可),如

https://gh.flyinbug.top/gh/https://github.com/opencv/opencv/releases/download/4.6.0/opencv-4.6.0-vc14_vc15.exe

Cmake编译配置

编译前

打开cmake-gui,选择opencv源码路径和编译输出路径,如:

image-20230513095213227

注:输出目录为 build/release,要自己在sources文件夹下新建

然后,点击config,选择刚安装的gcc、g++编译器后,等待结束,中间会下载一些东西,不出意外的话肯定报红,没关系,接下来告诉你怎么手动下载好。

【主要是下载ade和ffmpeg这两个东西】

TIPS:下载的东西会存放在 sources/.cache目录下

首先去编译输出的目录build/release下,找到 CMakeDownloadLog.txt这个文件,下载的东西都会在这里记录下来。

然后搜索 cmake_download,如图所示是下载 ade 的示例:

image-20230513102848948

去给定的地址下载好后,按照上图所说那样,把文件重命名然后放到 .cache/ade(或者 .cache/ffmpeg

TIPS:提供两个加速地址:

  1. https://gh.gh2233.ml/ 用于加速github.com,用法:(在下载链接前添加即可)

    https://gh.gh2233.ml/https://github.com/opencv/ade/archive/v0.1.1d.zip
    
  2. https://raw.staticdn.net 用于加速raw.githubusercontent.com,用法:(替换域名即可)

    https://raw.staticdn.net/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg_64.dll
    

都下载完成且放到对应的文件夹后的样子(注意使用的opencv不是4.6.0版本时,你的文件名前缀和我的可能不一样)

image-20230513104214872

使用4.6.0版本时,可以直接去我分享的链接下载,已经把这几个文件都打包好了,下载下来解压到 sources/.cache/目录下即可,链接如下:

文件链接:https://ajream.coding.net/s/4d16cd42-8fd3-4547-9432-1261f3ed4f1e,密码:xty8

接下来进行编译配置

配置编译选项

  1. 不需要test测试文件,所以把test都不打勾

image-20230513100235537

  1. 不需要编译python包(以后要用python开发opencv可以用pip下载安装)

    image-20230513100606815

  2. 不需要编译Java包

    image-20230513100705191

  3. 勾选 opengl

    image-20230513100807488

  4. 勾选build_opencv_world

    image-20230513100936844

  5. 勾选pkg

    image-20230513101009810

  6. 不勾选 precompiled_headers

    image-20230513104558977

  7. 设置安装路径,可以在mingw64安装路径下新建一个cpplibs文件夹,专门存放各种c++库

    image-20230513105444640

重新点击config,没有报红即可(如果是CMake Warning则不用理会),然后generate

开始正式编译

打开cmd,进入 build/release目录,然后输入指令 mingw32-make -j7进行编译(时间较长)

TIPS: -j7表示使用7个线程进行编译,一般不超过cpu核心的2倍

注:这个过程如果出错,不要担心,回去看看配置编译选项这里是不是有什么没有配置,记得不要编译python,如果系统没有安装python的话或者python版本太旧可能会报错。

重新配置好后,重新config->generate->输入mingw32-make -j8,之前编译好的一些东西不用再编译,会在原来的基础上继续编译的。

image-20230513113732551

安装

  1. 编译完成后,继续输入 mingw32-make install 即可自动安装到前面指定的文件夹内(这个过程很快)

  2. 进入安装好的文件夹中,把bin目录添加到环境变量

    image-20230513110018194

image-20230513114010614

编写代码测试

新建一个cmake项目,其中Cmakelists.txt如下

cmake_minimum_required(VERSION 3.0.0)
project(cvTest VERSION 0.1.0)

# 设置OpenCVConfig.cmake所在路径
set(OpenCV_DIR D:\\xxxx\\opencv\\x64\\mingw\\lib)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(cvTest WIN32 main.cpp)
target_link_libraries(cvTest ${OpenCV_LIBS})

测试代码main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
    // 图像显示测试
    cv::Mat img = cv::imread(R"(D:1.jpg)"); // 注意这里的//的方向,一开始写反了,怎么都出不来。

	if (!img.data)//判断图片是否加载进来
	{
		std::cout << "不能加载图片" << std::endl;
		return -1;
	}
	cv::namedWindow("加载的图片", cv::WINDOW_AUTOSIZE);
	cv::imshow("加载的图片", img);//""内命名一致,才能显示在一个窗口
	cv::waitKey(0);

}

image-20230513110729451

参考文章

  1. Windows安装OpenCV——利用MinGW+CMake从源码编译
  2. openCV:环境配置和测试代码
  3. WIN10 CMAKE +MINGW64 编译安装C++ OPENCV踩坑日记 - InvisibleVictory的文章 - 知乎
  4. Windows使用mingw64编译安装opencv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Video Grounding

一些工作能够检测包含特定动作的视频片段&#xff0c;一般称 为动作检测&#xff08;action detection&#xff09;或视频中的时序动作定位&#xff08;Temporal Action Grounding in Videos&#xff0c;TAGV&#xff09; 然而&#xff0c; TAGV 受限于预先定义的动作类别集合…

基于html+css的图展示57

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

母亲节:向世界上最伟大的母爱致敬

在这世间众多的亲情关系中&#xff0c;有一种关系无与伦比&#xff0c;毫不费力地凌驾于其他任何已知的地球关系之上。这种非凡的关系就是母亲与子女之间的关系。 母亲对家庭无尽的爱、奉献和忠诚使这份感情无价。为了向全球所有母亲表示敬意&#xff0c;母亲节在世界46个国家庆…

如何用ChatGPT拆解爆款内容(文章/脚本)、提出修改意见,再根据修改意见,最终成稿?

该场景对应的关键词库&#xff08;11个&#xff09;&#xff1a; 示例内容、爆款库、内容类型、拆解角度、亮点、不足、修改建议、文案、风格、文章、脚本 提问模板&#xff08;4个&#xff09;&#xff1a; 第一步&#xff1a;建立自己的爆款库&#xff0c;并选择其中1个爆款…

路径规划算法:基于鲸鱼优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于鲸鱼优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于鲸鱼优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法鲸鱼…

SpringBoot通过自定义注解整合Redisson实现分布式锁(单机+集群模式)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot通过自定义注解整合Redisson实现分布式锁 ⏱️ 创作时间&am…

低代码信创开发核心技术(一):基于Vue.js的描述依赖渲染DDR实现模型驱动的组件

前言 随着数字化转型的不断发展&#xff0c;低代码开发平台已成为企业快速建立自己的应用程序的首选方案。然而&#xff0c;实现这样一个平台需要具备高效、灵活和可定制化的能力。这正是基于描述依赖渲染&#xff08;Description dependency rendering&#xff09;所实现的。…

Jenkins 发布到 windows 主机

由于一些原因, 最近程序部署在windows 服务器上比较多, 本文以将前端程序发布到windows server 2016 为例进行介绍 流程 需考虑网络联通性, 此处我的目标服务器没有公网固定IP, 故采用vpn 工具组网 步骤: 一、使用执行SSH脚本的方式 1. 在jenkins 服务器及目标机器上安装 VP…

Windows终端中文乱码,查看系统默认编码及修改系统默认编码

最近windows升级之后出现一个问题&#xff0c;终端出现了乱码&#xff0c;导致启动程序启动不起来。 window系统如何查看系统默认编码 方式一&#xff1a; 在Windows平台下&#xff0c;winr 打开运行—》输入cmd进入cmd窗口&#xff0c;输入&#xff1a;chcp 可以得到操作系统…

会声会影2023是什么软件,会声会影和pr到底哪个好

图1是pr&#xff08;premiere&#xff09;平时大家可能会经常听到有人说会声会影2023&#xff0c;但是很多人都不知道这是什么软件。其实听它的名字就知道这是一款和声音、影像有关系的软件。下面&#xff0c;小编就来给大家具体介绍一下这款软件吧。 会声会影2023是什么软件&…

微信客服对接-唯一客服系统文档中心

微信客服官方网址为&#xff1a;https://kf.weixin.qq.com &#xff0c;可以在微信内、外各个场景中接入微信客服&#xff0c;提供一致的咨询体验&#xff0c;企业可通过API接口回复消息&#xff0c;做好客户服务。 微信客服或者也可以叫企业微信客服&#xff0c;可通过API接口…

CSS平面转换和渐变

01-平面转换 简介 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09; 平面转换也叫 2D 转换&#xff0c;属性是 transform 平移 transform: translate(X轴移动距…

IM即时通讯系统[SpringBoot+Netty]——梳理(三)

文章目录 七、打通业务服务器与IM服务器多端同步1、负载均衡策略—随机模式2、负载均衡策略—轮询模式3、负载均衡策略—一致性Hash4、配置负载均衡策略5、使用Apache—HttpClient封装http请求工具6、用户资料变更、群组模块回调7、数据多端同步8、封装查询用户Session工具类9、…

两分钟速览谷歌2023IO大会:AI军备竞争,全线出击

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 5月10日周三&#xff0c;谷歌举办了年度开发者大会Google I/O 2023&#xff0c;在会上…

【ARMv8 编程】A64 内存访问其他指令

A64 内存访问其他指令包括浮点和 NEON 标量加载存储指令、访问多个内存位置指令、非特权访问指令、预取内存指令、非临时加载存储对指令、内存屏障和栅栏指令、同步原语等。 一、浮点和 NEON 标量加载存储指令 加载和存储指令也可以访问浮点/NEON 寄存器。这里&#xff0c;大…

k8基础知识

总述 在构成扁平化网络的基础上实现Pod编排&#xff08;控制、管理&#xff09;、调度&#xff0c;再构成服务&#xff1b;对服务的管理有所欠缺&#xff1b;可以说k8s重点解决资源的问题 服务管理、应用管理&#xff1b;istio重点解决服务的问题 功能 开源、动态伸缩、负载…

爱奇艺2020校招Java方向笔试题(第一场)

1.计算下列程序的时间复杂度&#xff08;&#xff09; for (i1;i<n;i)for(j1;j<m;j){a1,a2,a3,a4};A.O(n) B.O(mn) C.O(m) D.O(1) 答案:B 2.求递归方程T(n)4T(n/2)n 的解 ( ) A.O(n) B.O(n^2) C.O(n^3) D.O(logn) 答案:B 用Mater公式计算 3.下列关于动态规划算法说法错…

RCWA包:光学模拟的强大工具——用于计算光子 晶体R/T 光谱 的严格耦合波分析

目录 RCWA包&#xff1a;光学模拟的强大工具 RCWA包的功能 如何开始使用RCWA包 RCWA包的特性 RCWA包的应用示例 示例代码 基本的光学概念介绍。 1. 反射率、透射率和散射率 2. 衍射和衍射光栅 3. 光子晶体 4. 布拉格镜 5. 垂直腔面发射激光器&#xff08;VCSEL&…

芒果改进YOLOv8系列:改进特征融合网络 BiFPN 结构,融合更多有效特征

芒果改进YOLOv8系列:改进特征融合网络 BiFPN 结构,融合更多有效特征 在这篇文章中,将 BiFPN 思想加入到 YOLOv8 结构中 该版本为高效简洁版,涨点多、还速度快(实际效果反馈) 本篇博客 不占用 高阶专栏的总篇数计划中 文章目录 一、BiFPN 论文理论二、效果反馈(涨点)…

华为OD机试真题 Java 实现【任务总执行时长】【2023Q1 100分】

一、题目描述 任务编排服务负责对任务进行组合调度。 参与编排的任务有两种类型&#xff0c;其中一种执行时长为taskA&#xff0c;另一种执行时长为taskB。 任务一旦开始执行不能被打断&#xff0c;且任务可连续执行。服务每次可以编排num个任务。请编写一个方法&#xff0c…