Windows11+Opencv+Clion编译源码

Windows11+Opencv+Clion编译源码

参考:https://www.robotsfan.com/posts/69395e08.html

注意事项

  • 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。
  • cmake过程会下载一些文件,如果是局域网的话可能下载不下来,可以事先下载好拷贝到相应目录。
  • OpenCV默认会编译很多功能,有些功能需要先自己安装依赖包。可以只选择自己需要的OpenCV功能编译,将会节省很多时间。

OpenCV源码下载

OpenCV源码地址:https://github.com/opencv/opencv.git

这里使用的tag为4.8.0

Cmake安装(cmake-3.25.3-windows-x86_64):

  • 下载地址:https://cmake.org/download/

mingw安装(C/C++编译器):

  • 注意一定要下载x86_64-posix-seh MinGW版本的MinGW,否则后面编译会出错
  • 下载地址:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/
  • x86_64:64位
  • posix :启用C ++ 11 / C11多线程功能。 使libgcc依赖于libwinpthreads,所以即使不直接调用pthreads API,也会分发winpthreads DLL。 分配一个更多的DLL与您的应用程序没有任何问题。
  • win32 :没有C ++ 11多线程功能。
  • sjlj,seh,dwarf都是异常处理模型。sjlj和seh是64位上的处理模型,sjlj是 C 标准库就有的东西,seh是2014年新发明的,seh较新性能较好。dwarf 和 sjlj 是32位上的两种异常处理模型。同样的,dwarf 的性能要优于 sjlj ,但是它不支持 64位 。
  • 所以我选择下载的是x86_64-posix-seh。
  • 配置环境变量,在系统变量PATH中添加:D:\software\mingw64\bin。注意路径不要有中文和空格。

生成opencv的makefile文件

  • 打开cmake-gui

  • 点击Browse Source选择选择 opencv 下的 sources文件夹

  • 点击Browse Build选择选择 opencv 下的 mingw_build文件夹

  • 点击Configure,指定编译器

在这里插入图片描述

  • 分别选择刚刚下载的posix版本MinGW-W64下的gccg++
    在这里插入图片描述

  • 点击Finish,等待完成

如遇到一下问题,请打开下面的文件

  • 按照日志里的下载地址分别下载这三个文件并放入/source/.cache/ffmpeg中,使用certutil -hashfile 文件名 MD5获取每个文件的MD5,以MD5-文件名重新命名这三个文件。

在这里插入图片描述

  • 回到cmake-gui,重新点击Configure,若无其他报错则点击Generate生成Makefile文件。

编译

  • 打开命令行进入 mingw-build文件夹,使用mingw32-make -j8编译(8为核心数,请自行调整),编译速度大概10分钟左右。

  • 编译成功后,使用mingw32-make install命令将编译生成的文件整合到opencv/mingw_build/install目录中

配置环境变量

配置环境变量,将opencv/mingw_build/install/x64/mingw/bin加入环境变量中的path中。

在clion项目中使用opencv

新建项目,编辑CMakeLists.txt

cmake_minimum_required(VERSION 3.22)
project(my_cv)set(CMAKE_CXX_STANDARD 17)add_executable(my_cv main.cpp)# 设置OpenCV目录
set(OpenCV_DIR D:/Users/opencv48/opencv/mybuild/install)
# 搜索OpenCV目录
find_package(OpenCV REQUIRED)
# 链接OpenCV库文件
target_link_libraries(my_cv ${OpenCV_LIBS})

编辑main.cpp

#include <iostream>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat img = imread("D:/workspace/cpp_workspace/my-cv/data/img/lena.jpg");namedWindow("test", WINDOW_AUTOSIZE);imshow("test", img);waitKey();return 0;
}

注:
cmake版本:

C:\Users\zishi>cmake -version
cmake version 3.25.3CMake suite maintained and supported by Kitware (kitware.com/cmake).

g++版本:

C:\Users\zishi>g++ --version
g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

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

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

相关文章

Restful开发规范以及开发流程

目录 一、RestFul开发规范 二、开发流程 一、RestFul开发规范 RESTful&#xff08;Representational State Transfer&#xff09;是一种用于设计和开发网络应用程序的架构风格&#xff0c;它强调使用标准HTTP方法和状态码来进行资源的管理和交互。以下是一些常见的RESTful开发…

【linux-网络】4层转发方法-iptable以及nginx

1.背景 有时候远程或者某些业务需要做转发就会用到iptables或者nginx&#xff0c;或者ss都可以 根据自己的情况去适配。 2.方法&#xff1a; 1&#xff09;iptables -把linux内核转发功能打开 echo "net.ipv4.ip_forward1" >> /etc/sysctl.conf -出入转发…

对微服务网关的一些总结

对微服务网关的一些总结 一. 什么是网关 网关是位于NGINX(或没有)与真实微服务间的转发服务。 用户通过HTTP接口&#xff0c;连接到NGINX&#xff0c;然后NGINX反向到M个网关。 网关根据[服务注册与发现],进行转发请求到具体的微服务上。 由于网关可编码&#…

SystemVerilog scheduler

文章目录 简介调度器simulation regionPreponed regionActive regionInactive regionNBA(Non-blocking Assignment Events region)Observed regionReactive regionRe-Inactive Events regionRe-NBA RegionPostponed Region PLI region:Pre-active regionPre-NBA regionPost-NBA…

ELK日志分析系统

文章目录 一. ELK日志分析系统概述1.ELK 简介2.ELK日志分析系统2.1 ElasticSearch2.1.1 ElasticSearch概述2.1.2 ElasticSearch核心概念&#xff08;作用&#xff09; 2.2 Kiabana2.2.1 Kiabana 概念2.2.2 Kiabana 主要功能 2.3 Logstash2.3.1 Logstash 概念2.3.2 Logstash主要…

unreal engine 开启像素流笔记

本教程忽略了一些细节&#xff0c;但是不重要&#xff0c;需要详细教程参考https://docs.unrealengine.com/5.2/zh-CN/getting-started-with-pixel-streaming-in-unreal-engine/ 1.启用像素流插件Pixel Streaming 2.编辑器偏好设置 关卡编辑器-播放添加额外启动参数 image.png …

【linux--->网络层协议】

文章目录 [TOC](文章目录) 一、概念1.网络层概念2.IP地址概念 二、IP协议报文结构1.首部长度2.总长度(total length)3.协议4.版本号(version)5.服务类型(Type Of Service)6.生存时间间(Time To Live, TTL) 三、网段划分1.5类IP划分法.2.CIDR(Classless Interdomain Routing)划分…

guava-retry使用笔记

guava-retry使用笔记 xml依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency>使用案例 重试3次&#xff0c;每次间隔3秒 /*** 重试…

Jenkins工具系列 —— 插件 钉钉发送消息

文章目录 安装插件 Ding TalkJenkins 配置钉钉机器人钉钉APP配置项目中启动钉钉通知功能 安装插件 Ding Talk 点击 左侧的 Manage Jenkins —> Plugins ——> 左侧的 Available plugins Jenkins 配置钉钉机器人 点击 左侧的 Manage Jenkins &#xff0c;拉到最后 钉…

react面试之context的value变化时,内部所有子组件是否变化

上测试代码 // context const state {a: 1,b: 1, } const context createContext(state);export default context; // A组件 const A () > {const { a } useContext(context);return (<div>{a}</div>) } export default A;// B组件 const B () > {cons…

使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思

前言 本文给大家分享三个具有过渡效果的汉堡图标&#xff0c;当点击汉堡图标时&#xff0c;过渡为叉号图标。这种具有过渡特效的图标挺炫酷的&#xff0c;感觉一下子给网页增加一点新颖特色。早在2015年左右&#xff0c;国外挺多优秀门户网站都有使用类似的图标&#xff0c;那…

服务限流治理

一、基础概念 1.什么是服务限流&#xff1f; 限流在日常生活中也很常见&#xff0c;比如节假日你去一个旅游景点&#xff0c;为了不把景点撑爆&#xff0c;管理部门通常会在外面设置拦截&#xff0c;限制景点的进入人数&#xff08;等有人出来之后&#xff0c;再放新的人进去…

代码随想录算法训练营第37天 738.单调递增的数字 ●968.监控二叉树

738. 单调递增的数字 通过分析数字的每一位来解决。我们可以从左到右扫描数字&#xff0c;并确保在构造结果时遵循给定的规则。以下是具体实现&#xff1a; 将数字转换为字符数组&#xff0c;以便轻松访问每一位。从左到右遍历数字的每一位&#xff0c;如果发现某一位大于其右…

在.net 6.0中 调用远程服务器web服务,Webservices(xxx.asmx) ,RESTful 风格,2种解决方案。

1.使用 Connected Services&#xff1a; 右键单击您的项目&#xff0c;选择 "Add"&#xff08;添加&#xff09;-> "Connected Services"&#xff08;已连接的服务&#xff09;。 在 "Connected Services" 对话框中&#xff0c;选择 "W…

问道管理:盘后股价跳水!苹果最新财报出炉

北京时间8月4日&#xff0c;苹果公司发布2023财年第三财季&#xff08;2023年二季度&#xff09;财报。二季度&#xff0c;苹果实现营收817.97亿美元&#xff0c;同比下降1.40%&#xff1b;净利润为198.81亿美元&#xff0c;同比增加2.26%。 其中&#xff0c;二季度&#xff0c…

Pytest学习教程_装饰器(二)

前言 pytest装饰器是在使用 pytest 测试框架时用于扩展测试功能的特殊注解或修饰符。使用装饰器可以为测试函数提供额外的功能或行为。   以下是 pytest 装饰器的一些常见用法和用途&#xff1a; 装饰器作用pytest.fixture用于定义测试用例的前置条件和后置操作。可以创建可重…

理解树的结构

树的重要性 二分查找算法、几种核心的排序算法以及图算法都与树有非常密切的关系。有句话锁&#xff0c;“没学会树&#xff0c;算法相当于白学”&#xff0c;可见&#xff0c;树在算法中的地位。 树的考察方面 层次遍历以及拓展问题 前后序遍历与拓展问题 中序遍历与搜索树问…

Ubuntu网络设置之固定IP详解

尊敬的家人们&#xff0c;欢迎观看我的文章&#xff01;今天&#xff0c;我们将为您介绍Ubuntu22.04操作系统中固定IP的设置方法&#xff0c;帮助您更好地管理网络连接并提高网络稳定性。 什么是固定IP&#xff1f; 在网络中&#xff0c;IP地址是设备在网络上的唯一标识。通常…

通过华为杯竞赛、高教社杯和数学建模国赛实现逆袭;助力名利双收

文章目录 ⭐ 赛事介绍⭐ 参赛好处⭐ 辅导比赛⭐ 写在最后 ⭐ 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛。该竞赛旨在通过实际问题的建模和解决&#xff0c;培养研究生的创新能力和团队合作精神&#xff0c;推动科技创新和应用…

长相思追剧小游戏

看效果图 Vue长相思 刚学Vue&#xff0c;正好在追剧&#xff0c;看到这个小案例觉得挺好玩的&#xff0c;第一天学&#xff0c;代码太简陋了 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name&qu…