【图文】【DIY便签】如何自行编译OPENCV使用动态库
1 去官网下载安装包和源码

下面红色圈中的是源码,绿色圈中的是安装包:

2 配置工具链
安装过程不说了,教程到处都是。编译的话使用CMAKE,配置如下:

上面两个路径分别是:
- 源码目录
- 编译生成的文件放置的位置,这里放在源码目录下的build目录中
然后点下面那个Configure,配置工具链,也就是选编译器的bin目录,这个看你自己用的啥编译器,我是安装的GNU工具链,还有就是选make工具,我选的是minGW Make Tool,看你自己用的什么。配置的时候它会自己下载第三方包,可能比较慢。

之后就点Gernate生成makefiles,很快。
3 开始编译
生成完了之后就可以进到源码目录编译了,我这里使用mingw32-make.exe 作为make工具

编译过程会有进度提示:
[100%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/rotationConverters.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_interactive-calibration.exe
[100%] Built target opencv_interactive-calibration
[100%] Building CXX object apps/version/CMakeFiles/opencv_version.dir/opencv_version.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_version.exe
[100%] Built target opencv_version
[100%] Building CXX object apps/version/CMakeFiles/opencv_version_win32.dir/opencv_version.cpp.obj
[100%] Built target opencv_version
[100%] Building CXX object apps/version/CMakeFiles/opencv_version_win32.dir/opencv_version.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_version_win32.exe
[100%] Built target opencv_version
[100%] Building CXX object apps/version/CMakeFiles/opencv_version_win32.dir/opencv_version.cpp.obj
[100%] Built target opencv_version
[100%] Built target opencv_version
[100%] Building CXX object apps/version/CMakeFiles/opencv_version_win32.dir/opencv_version.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_version_win32.exe
[100%] Built target opencv_version_win32
[100%] Building CXX object apps/model-diagnostics/CMakeFiles/opencv_model_diagnostics.dir/model_diagnostics.cpp.obj
[100%] Linking CXX executable ..\..\bin\opencv_model_diagnostics.exe
[100%] Built target opencv_model_diagnostics
到100%就编译完了:

build/bin目录下会有一堆动态库:

写一个测试demo,这里用官方提供的:
#include <stdio.h>
#include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char** argv )
{printf("usage: DisplayImage.out <Image_Path>\n");if ( argc != 2 ){printf("usage: DisplayImage.out <Image_Path>\n");return -1;}Mat image;image = imread( argv[1], IMREAD_COLOR );if ( !image.data ){printf("No image data \n");return -1;}namedWindow("Display Image", WINDOW_AUTOSIZE );imshow("Display Image", image);waitKey(0);waitKey(0);waitKey(0);waitKey(0);waitKey(0);return 0;
}
用下面这个命令编译:
g++ ./showiamge.cpp
-I L:\SoftWares\opencv\opencv\build\include
-L L:/SoftWares/opencv-4.10.0/build/lib
-lopencv_calib3d4100 -lopencv_core4100 -lopencv_dnn4100 -lopencv_features2d4100 -lopencv_flann4100 -lopencv_gapi4100 -lopencv_highgui4100 -lopencv_imgcodecs4100 -lopencv_imgproc4100 -lopencv_ml4100 -lopencv_objdetect4100 -lopencv_photo4100 -lopencv_stitching4100 -lopencv_ts4100 -lopencv_video4100 -lopencv_videoio4100
注意头文件目录要在安装目录里去找,里面有各个模块的头文件:
-I L:\SoftWares\opencv\opencv\build\include
安装目录的\build\include:

源码编译目录下的include\只有一个头文件

生成的a.exe就是编译出来的可执行文件,这时候需要把动态库放到同一个目录下:

然后就可以执行了,完事。
相关文章:
【图文】【DIY便签】如何自行编译OPENCV使用动态库
1 去官网下载安装包和源码 下面红色圈中的是源码,绿色圈中的是安装包: 2 配置工具链 安装过程不说了,教程到处都是。编译的话使用CMAKE,配置如下: 上面两个路径分别是: 源码目录编译生成的文件放置的位…...
WordPress文章自动提交Bing搜索引擎:PHP推送脚本教程
随着网站SEO优化的重要性日益增加,将新发布的内容快速提交到搜索引擎显得尤为重要。尤其对于Bing站长平台,自动化推送能让Bing尽快发现和索引我们网站的新内容。本文将详细介绍如何通过PHP脚本自动推送WordPress当天发布的文章至Bing站长平台,确保新文章被Bing及时收录。 前…...
C++题目分享
嗨嗨嗨,我又来更新这个系列了,很久没更新了。让我们看一看有那些有趣的题目: 题目一: 1.以单链表作为存储结构,实现线性表的就地逆置(提示,就地逆置:在不使用额外的数据结构或空间…...
【Spring 框架】初识 Spring
文章目录 前言1. 什么是 Spring2. 什么是 Maven3. 第一个 SpringBoot 项目4. 项目讲解结语 前言 在前面我们一起学习了 JavaSE 的基础知识,随着学习的深入,我们也将逐步介绍 JavaEE 的内容,像 Spring 框架,Mybatis 等等。在本篇博…...
链表(Linkedlist)
序言 我们都了解链表是一种数据的存储结构,在Java使用中逻辑与c,c语言数据结构别无二致,但主要由于Java中不存在指针的说法,从而导致在实现过程中的代码不同,所以在学习的过程中我们无需过于担心,逻辑都是…...
信息安全工程师(79)网络安全测评概况
一、定义与目的 网络安全测评是指参照一定的标准规范要求,通过一系列的技术、管理方法,获取评估对象的网络安全状况信息,并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…...
保研考研机试攻略:python笔记(3)
🐨🐨🐨11sort 与 sorted 区别 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作, 无返回值,而内建函数 sorted 方法返回的…...
刘卫国MATLAB程序设计与应用课后答案PDF第三版
刘卫国《MATLAB程序设计与应用》(第三版)是对普通高等教育“十一五”国家级规划教材《MATLAB程序设计与应用》(第二版)的一次全面修订。全书总体保持第二版原有体系结构,但根据技术发展和应用的需要扩充了许多新内容。全书强调数学方法、算法…...
【鉴权】Web 会话管理:Cookie、Session 和 Token 深度对比
目录 引言一、Cookie二、Session三、Token (JWT)四、总结对比五、Token、Session 和 Cookie 的选择总结 引言 在现代 Web 开发中,Cookie、Session 和 Token 都是用于用户身份验证和状态管理的常见技术。每种技术有其特定的应用场景和优缺点,理解它们之间…...
ArkTS--应用状态
应用状态 应用状态相关的内容需要使用模拟器或真机调试,在API 11开始也支持preview 1.LocalStorage LocalStorage是页面级的UI状态存储,通过Entry装饰器接收参数可以在页面内共享数据 1.1 页面内共享数据 import {MyUser} from ../model/MyUser //用户对…...
yolov8涨点系列之引入CBAM注意力机制
文章目录 YOLOv8 中添加注意力机制 CBAM 具有多方面的好处特征增强与选择通道注意力方面空间注意力方面 提高模型性能计算效率优化: yolov8增加CBAM具体步骤CBAM代码(1)在__init.pyconv.py文件的__all__内添加‘CBAM’(2)conv.py文件复制粘贴CBAM代码(3)修改task.py…...
java标准JavaBean类
1. public class test {//属性private String username;private String password;private String email;private String gender;private int age;//快捷键//altinsert//altFninsert//插件PTG1秒生成标准Javabean //插件ptg c//空参public test() {}//全部参数…...
MATLAB界面设计全攻略:从基础入门到高级应用
引言 MATLAB作为一种功能强大的科学计算软件,不仅可以进行各种复杂的数值计算,还可以通过其图形用户界面设计工具(GUI)为用户提供可视化操作界面。本教程旨在详细介绍MATLAB界面设计的全过程,为初学者提供从入门到精通…...
JavaScript API部分知识点
一、Dom获取&属性操作 (一)、 Web API 基本认知 1、变量声明 const 声明的值不能更改,而且const声明变量的时候需要里面进行初始化 但是对于引用数据类型,const声明的变量,里面存的不是 值,是 地址…...
钉钉调试微应用整理2
第一步 新建应用 钉钉开放平台](https://open-dev.dingtalk.com/) 去新增应用 第二步 配置应用信息 把本地代码运行起来,并设置本地地址 第三步 在本地代码添加调试命令 这里有2中添加方式 哪一种都可以 方式一: index.html页面中 <!DOCTYPE h…...
C++初级入门(1)
第一部分 基础语法入门 一、基础 1、变量与常量 1、变量 变量存在的意义:方便管理内存空间 2、常量 用于记录程序中不可更改的数据 #define 常量名 常量值 const 数据类型 常量名常量值 ; 2、数据类型 1、整型 short 2字节 int 4字节 long Wi…...
group_concat配置影响程序出bug
在 ThinkPHP 5 中,想要临时修改 MySQL 数据库的 group_concat_max_len 参数,可以使用 原生 SQL 执行 来修改该值。你可以通过 Db 类来执行 SQL 语句,从而修改会话(Session)级别的变量。 步骤 设置 group_concat_max_l…...
将Go项目编译为可执行文件(windows/linux)
windows 编译成windows环境exe可执行文件过程,打开文件所在目录,在资源路径框中输入cmd,打开cmd命令框,通过“go env”查看当期环境变量,以windows10环境为例,默认为windows环境。 // 配置环境变量 SET C…...
IMS高压发生器维修高压电源维修XRG100/1000
IMS高压发生器的硬件组成: 高压控制发生器主要由高压发生器和高压控制器两部分组成。高压控制器是控制调节X射线管管电压和管电流的机构,高压发生器是管电压和管电流产生的执行机构,通过高压控制器对高压发生器进行控制调节,通过高压电缆将高压发生器与X射线管连接…...
斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
前言 因为我司「七月在线」关于dexcap的复现/优化接近尾声了,故准备把dexcap的源码也分析下。下周则分析下iDP3的源码——为队伍「iDP3人形的复现/优化」助力 最开始,dexcap的源码分析属于此文《DexCap——斯坦福李飞飞团队泡茶机器人:带…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
