C++ OpenCV编译安装教程

2023-10-27

环境说明

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ OpenCV编译安装教程 的相关文章

  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • C# 结构默认值

    我有一个方法 它接受一个包含许多具有基本数据类型的字段的结构 我想传递大部分默认值 但需要进行一些调整 但我了解结构声明中的基本字段不能包含默认值声明 例如struct S int a 42 现在是这样的 OptionsStruct opt
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS

随机推荐

  • WEB前端网页设计-Bootstrap 按钮下拉菜单

    目录 Bootstrap 按钮下拉菜单 分割的按钮下拉菜单 按钮下拉菜单的大小 按钮上拉菜单 Bootstrap 按钮下拉菜单 本章将讲解如何使用 Bootstrap class 向按钮添加下拉菜单 如需向按钮添加下拉菜单 只需要简单地在一
  • c# 简单httpGet、httpPost方法以及http提交Form表单

    httpGet和httpPost public static class HttpHelper
  • 安装Nginx教程(CentOS8)

    这件事是不是神迹 并不重要 重要的是神感动了我 低俗小说 此文针对centos8操作 1 centos8安装完毕后安装基本工具 yum install gcc openssl openssl devel pcre pcre devel zl
  • postman重新安装后collection数据恢复

    目录 前言 恢复collection数据 前言 记录postman重新安装后collection数据恢复的方法 恢复collection数据 1 登录postman账号后 选择My Workspace 点击import 2 点击Upload
  • Linux Polkit权限提升漏洞(CVE-2021-4034)

    漏洞描述 Linux Polkit权限提升漏洞 CVE 2021 4034 是由于pkexec无法正确处理调用参数 从而将环境变量作为命令执行 具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞 从而获得受影响主机的ro
  • 猜数字小游戏

    猜数字小游戏 有随机数 保底机制玩法 package pxc cn import java util Random import java util Scanner public class sc public static void ma
  • MATLAB仿真噪声信号、单多音信号、LFM、2ASK、2FSK、BPSK、16QAM

    文章目录 背景 1 高斯白噪声 2 噪声调幅信号 3 噪声调频信号 4 单音信号 5 多音信号 6 线性扫频信号 7 2ASK信号 8 2FSK信号 9 BPSK信号 10 16QAM信号 缩略对照表 背景 临近毕业整理毕业论文的资料时 看
  • 登录框漏洞

    继上次登陆框引起的血案这个文章之后 时隔一个月笔者又写了续集 呃 升华版 0 00 文章内容结构图 0 01 信息泄露 利用泄露的信息可以大大增加我们的可测试点 从而增加我们的成功率 1 HTML源代码 必看的肯定要属HTML源代码了 源代
  • JavaScript学习笔记:动态集合

    DOM是JavaScript中重要部分之一 在DOM中有一个动态集合 这个动态集合包含节点的集合 NodeList 元素属性的集合 NamedNodeMap 和HTML元素的集合 HTMLCollection 这三个对象都是类数组 Arra
  • 从AD域获取用户AD信息

    public static Dictionary
  • 一个失败的项目

    转眼间 入职已经一年了 在这一年里 我一直在一个项目组 至今这个项目还没有结束 其实说起来这也是一个不大的项目 可是做起来却令人非常头疼 我的同事已经有好几个离开这个项目组了 对于公司来说 这个项目也像是一个鸡肋 首先 这个项目的需求做得不
  • 数据挖掘作业5(个数据库有5个事务,如下表所示。设min_sup=60%,min_conf=80%)

    5 7一个数据库有5个事务 如下表所示 设min sup 60 min conf 80 1 分别用Apriori算法和FP growth算法找出所有频繁项集 比较两种挖掘方法的效率 2 比较穷举法和Apriori算法生成的候选项集的数量 3
  • Qt基础:三、模态和非模态对话框

    QDialog类是所有对话框窗口类的基类 对话框窗口是一个经常用来完成短小任务或者和用户进行简单交互的顶层窗口 按照运行对话框时是否还可以和该程序的其他窗口进行交互 对话框常被分为两类 模态的 modal 阻塞 和非模态的 modeless
  • MediaPipe介绍

    MediaPipe介绍 1 MediaPipe简介 Mediapipe是google的一个开源项目 可以提供开源的 跨平台的常用机器学习 machine learning 方案 Mediapipe实际上是一个集成的机器学习视觉算法的工具库
  • OPENCV的安装

    关于OPENCV的python3 8 1的安装和一些问题解决方案 关于OPENCV 安装这个OPENCV的过程实在是遇到了很多问题 以至于我非常想把我的经验分享出来 以方便大家的安装和使用 python的安装 首先 安装opencv前 必须
  • I5 4590 台式机安装黑苹果最新版笔记

    本文是用四叶草2 4最新版和OSX10 12安装到台式机上 目的是进行IOS开发 安装后win7 和 OSX 双系统 F8选择任意系统 穷逼一枚 只能折腾 以前装过虚拟机 总是用不到最新版 在网上知道可以装最新版os x 10 12 于是折
  • equalsIgnoreCase()和equals()两者区别

    equalsIgnoreCase 不区分大小写 无论大写还是小写比较 都会返回true equals 区分大小写 比较严谨 只能是相同的数字字母比较
  • 基于51单片机简易计算器LCD1602显示

    protues中有KEYPAD SMALLCALC直接就是4 4的矩阵 做完之后才发现了 当时不知道 自己画了一个4 4的矩阵键盘 1 protues仿真图 2 源程序 注释我写的很详细 include reg52 h typedef un
  • c++ 实现猜数字游戏

    在1 100 之间由电脑随机生成一个数 游戏目标就是猜到这个数 c 用whlie语句实现猜数字游戏 注意 1 rand生成的是伪随机数 2 srand通过系统时间生成真正随机数 要写头文件 include
  • C++ OpenCV编译安装教程

    文章目录 环境说明 Cmake编译配置 编译前 配置编译选项 开始正式编译 安装 编写代码测试 参考文章 环境说明 win10 MinGW64 Cmake 下载mingw64 版本 12 1 0 posix seh 下载Cmake 版本3