【图文】【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——斯坦福李飞飞团队泡茶机器人:带…...
Duix.Avatar:30分钟免费创建你的专属AI数字人,本地部署零成本
Duix.Avatar:30分钟免费创建你的专属AI数字人,本地部署零成本 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 你是否曾梦想拥有一个能为你24小时工作的数字分身?是否因商业数字人服务动…...
OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升
OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升 1. 为什么需要分析对话日志 上个月我把本地部署的OpenClaw智能体从Qwen切换到了GLM-4.7-Flash模型,本以为会获得更好的任务执行效果,结果却遇到了意想不到的问题。每天早上打开电脑&…...
vLLM-v0.17.1与卷积神经网络(CNN)结合:多模态理解新思路
vLLM-v0.17.1与卷积神经网络(CNN)结合:多模态理解新思路 1. 多模态AI的行业痛点与解决方案 计算机视觉和自然语言处理长期作为AI两大独立分支发展,但在实际业务场景中,图像与文本的协同理解需求日益凸显。传统方案通…...
开箱即用:ANIMATEDIFF PRO预置镜像部署,快速开启AI视频创作
开箱即用:ANIMATEDIFF PRO预置镜像部署,快速开启AI视频创作 1. 为什么选择ANIMATEDIFF PRO镜像 如果你正在寻找一个能快速生成电影级AI视频的解决方案,ANIMATEDIFF PRO预置镜像可能是目前最省心的选择。这个基于AnimateDiff架构和Realistic…...
智能管控硬件设备:FanControl散热管理工具全攻略
智能管控硬件设备:FanControl散热管理工具全攻略 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanC…...
我把DeepSeek调教成了我的‘专属文案总监’:角色扮演Prompt的实战配置手册
把DeepSeek调教成你的「专属文案总监」:高阶Prompt工程实战指南 当市场部的Lisa第一次用AI生成产品文案时,她得到的是一篇充满技术术语的说明文;而运营总监Mike让AI写的周报,读起来像学术论文。这就像给米其林大厨一台高级烤箱&a…...
深入解析DDR内存训练:从FLY BY布线到信号对齐
1. 为什么DDR内存需要训练? 当你按下电脑开机键的那一刻,主板上的DDR内存就开始了一段奇妙的"热身运动"。这个热身过程专业术语叫做内存训练(Memory Training),它是确保内存稳定运行的关键步骤。想象一下&a…...
Lua代码混淆实战:基于Prometheus的Unity项目保护指南
1. 为什么你的Unity项目需要Lua代码混淆 最近有个做独立游戏的朋友跟我吐槽,他花半年开发的游戏上线不到一周就被破解了。更气人的是,破解版直接去掉了内购系统,还挂在第三方平台免费下载。这种情况在游戏圈太常见了,特别是使用Lu…...
CentOS7服务器流量飙升?别慌,用iftop+nload快速揪出‘吃流量’的进程
CentOS7服务器流量异常排查实战:iftop与nload组合拳 深夜的告警铃声突然响起,监控系统显示某台核心业务服务器的带宽使用率飙升至95%。作为运维人员,这种场景并不陌生——可能是业务量激增,也可能是恶意攻击,或是某个失…...
Java 开发 日志技术
1.概述为什么要在程序中记录日志呢?便于追踪应用程序中的数据信息、程序的执行过程。便于对应用程序的性能进行优化。便于应用程序出现问题之后,排查问题,解决问题。便于监控系统的运行状态。2.日志框架JUL:这是JavaSE平台提供的官…...
