当前位置: 首页 > news >正文

【图文】【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 去官网下载安装包和源码 下面红色圈中的是源码&#xff0c;绿色圈中的是安装包&#xff1a; 2 配置工具链 安装过程不说了&#xff0c;教程到处都是。编译的话使用CMAKE&#xff0c;配置如下&#xff1a; 上面两个路径分别是&#xff1a; 源码目录编译生成的文件放置的位…...

WordPress文章自动提交Bing搜索引擎:PHP推送脚本教程

随着网站SEO优化的重要性日益增加,将新发布的内容快速提交到搜索引擎显得尤为重要。尤其对于Bing站长平台,自动化推送能让Bing尽快发现和索引我们网站的新内容。本文将详细介绍如何通过PHP脚本自动推送WordPress当天发布的文章至Bing站长平台,确保新文章被Bing及时收录。 前…...

C++题目分享

嗨嗨嗨&#xff0c;我又来更新这个系列了&#xff0c;很久没更新了。让我们看一看有那些有趣的题目&#xff1a; 题目一&#xff1a; 1.以单链表作为存储结构&#xff0c;实现线性表的就地逆置&#xff08;提示&#xff0c;就地逆置&#xff1a;在不使用额外的数据结构或空间…...

【Spring 框架】初识 Spring

文章目录 前言1. 什么是 Spring2. 什么是 Maven3. 第一个 SpringBoot 项目4. 项目讲解结语 前言 在前面我们一起学习了 JavaSE 的基础知识&#xff0c;随着学习的深入&#xff0c;我们也将逐步介绍 JavaEE 的内容&#xff0c;像 Spring 框架&#xff0c;Mybatis 等等。在本篇博…...

链表(Linkedlist)

序言 我们都了解链表是一种数据的存储结构&#xff0c;在Java使用中逻辑与c&#xff0c;c语言数据结构别无二致&#xff0c;但主要由于Java中不存在指针的说法&#xff0c;从而导致在实现过程中的代码不同&#xff0c;所以在学习的过程中我们无需过于担心&#xff0c;逻辑都是…...

信息安全工程师(79)网络安全测评概况

一、定义与目的 网络安全测评是指参照一定的标准规范要求&#xff0c;通过一系列的技术、管理方法&#xff0c;获取评估对象的网络安全状况信息&#xff0c;并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…...

保研考研机试攻略:python笔记(3)

&#x1f428;&#x1f428;&#x1f428;11sort 与 sorted 区别 sort 是应用在 list 上的方法&#xff0c;sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作&#xff0c; 无返回值&#xff0c;而内建函数 sorted 方法返回的…...

刘卫国MATLAB程序设计与应用课后答案PDF第三版

刘卫国《MATLAB程序设计与应用》&#xff08;第三版&#xff09;是对普通高等教育“十一五”国家级规划教材《MATLAB程序设计与应用》(第二版)的一次全面修订。全书总体保持第二版原有体系结构&#xff0c;但根据技术发展和应用的需要扩充了许多新内容。全书强调数学方法、算法…...

【鉴权】Web 会话管理:Cookie、Session 和 Token 深度对比

目录 引言一、Cookie二、Session三、Token (JWT)四、总结对比五、Token、Session 和 Cookie 的选择总结 引言 在现代 Web 开发中&#xff0c;Cookie、Session 和 Token 都是用于用户身份验证和状态管理的常见技术。每种技术有其特定的应用场景和优缺点&#xff0c;理解它们之间…...

ArkTS--应用状态

应用状态 应用状态相关的内容需要使用模拟器或真机调试&#xff0c;在API 11开始也支持preview 1.LocalStorage LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收参数可以在页面内共享数据 1.1 页面内共享数据 import {MyUser} from ../model/MyUser //用户对…...

yolov8涨点系列之引入CBAM注意力机制

文章目录 YOLOv8 中添加注意力机制 CBAM 具有多方面的好处特征增强与选择通道注意力方面空间注意力方面 提高模型性能计算效率优化&#xff1a; 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作为一种功能强大的科学计算软件&#xff0c;不仅可以进行各种复杂的数值计算&#xff0c;还可以通过其图形用户界面设计工具&#xff08;GUI&#xff09;为用户提供可视化操作界面。本教程旨在详细介绍MATLAB界面设计的全过程&#xff0c;为初学者提供从入门到精通…...

JavaScript API部分知识点

一、Dom获取&属性操作 &#xff08;一&#xff09;、 Web API 基本认知 1、变量声明 const 声明的值不能更改&#xff0c;而且const声明变量的时候需要里面进行初始化 但是对于引用数据类型&#xff0c;const声明的变量&#xff0c;里面存的不是 值&#xff0c;是 地址…...

钉钉调试微应用整理2

第一步 新建应用 钉钉开放平台](https://open-dev.dingtalk.com/) 去新增应用 第二步 配置应用信息 把本地代码运行起来&#xff0c;并设置本地地址 第三步 在本地代码添加调试命令 这里有2中添加方式 哪一种都可以 方式一&#xff1a; index.html页面中 <!DOCTYPE h…...

C++初级入门(1)

第一部分 基础语法入门 一、基础 1、变量与常量 1、变量 变量存在的意义:方便管理内存空间 2、常量 用于记录程序中不可更改的数据 #define 常量名 常量值 const 数据类型 常量名常量值 ; 2、数据类型 1、整型 short 2字节 int 4字节 long Wi…...

group_concat配置影响程序出bug

在 ThinkPHP 5 中&#xff0c;想要临时修改 MySQL 数据库的 group_concat_max_len 参数&#xff0c;可以使用 原生 SQL 执行 来修改该值。你可以通过 Db 类来执行 SQL 语句&#xff0c;从而修改会话&#xff08;Session&#xff09;级别的变量。 步骤 设置 group_concat_max_l…...

将Go项目编译为可执行文件(windows/linux)

windows 编译成windows环境exe可执行文件过程&#xff0c;打开文件所在目录&#xff0c;在资源路径框中输入cmd&#xff0c;打开cmd命令框&#xff0c;通过“go env”查看当期环境变量&#xff0c;以windows10环境为例&#xff0c;默认为windows环境。 // 配置环境变量 SET C…...

IMS高压发生器维修高压电源维修XRG100/1000

IMS高压发生器的硬件组成&#xff1a; 高压控制发生器主要由高压发生器和高压控制器两部分组成。高压控制器是控制调节X射线管管电压和管电流的机构,高压发生器是管电压和管电流产生的执行机构,通过高压控制器对高压发生器进行控制调节,通过高压电缆将高压发生器与X射线管连接…...

斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段

前言 因为我司「七月在线」关于dexcap的复现/优化接近尾声了&#xff0c;故准备把dexcap的源码也分析下。​下周则分析下iDP3的源码——为队伍「iDP3人形的复现/优化」助力 最开始&#xff0c;dexcap的源码分析属于此文《DexCap——斯坦福李飞飞团队泡茶机器人&#xff1a;带…...

Duix.Avatar:30分钟免费创建你的专属AI数字人,本地部署零成本

Duix.Avatar&#xff1a;30分钟免费创建你的专属AI数字人&#xff0c;本地部署零成本 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 你是否曾梦想拥有一个能为你24小时工作的数字分身&#xff1f;是否因商业数字人服务动…...

OpenClaw对话日志分析:GLM-4.7-Flash任务执行成功率提升

OpenClaw对话日志分析&#xff1a;GLM-4.7-Flash任务执行成功率提升 1. 为什么需要分析对话日志 上个月我把本地部署的OpenClaw智能体从Qwen切换到了GLM-4.7-Flash模型&#xff0c;本以为会获得更好的任务执行效果&#xff0c;结果却遇到了意想不到的问题。每天早上打开电脑&…...

vLLM-v0.17.1与卷积神经网络(CNN)结合:多模态理解新思路

vLLM-v0.17.1与卷积神经网络&#xff08;CNN&#xff09;结合&#xff1a;多模态理解新思路 1. 多模态AI的行业痛点与解决方案 计算机视觉和自然语言处理长期作为AI两大独立分支发展&#xff0c;但在实际业务场景中&#xff0c;图像与文本的协同理解需求日益凸显。传统方案通…...

开箱即用:ANIMATEDIFF PRO预置镜像部署,快速开启AI视频创作

开箱即用&#xff1a;ANIMATEDIFF PRO预置镜像部署&#xff0c;快速开启AI视频创作 1. 为什么选择ANIMATEDIFF PRO镜像 如果你正在寻找一个能快速生成电影级AI视频的解决方案&#xff0c;ANIMATEDIFF PRO预置镜像可能是目前最省心的选择。这个基于AnimateDiff架构和Realistic…...

智能管控硬件设备:FanControl散热管理工具全攻略

智能管控硬件设备&#xff1a;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调教成你的「专属文案总监」&#xff1a;高阶Prompt工程实战指南 当市场部的Lisa第一次用AI生成产品文案时&#xff0c;她得到的是一篇充满技术术语的说明文&#xff1b;而运营总监Mike让AI写的周报&#xff0c;读起来像学术论文。这就像给米其林大厨一台高级烤箱&a…...

深入解析DDR内存训练:从FLY BY布线到信号对齐

1. 为什么DDR内存需要训练&#xff1f; 当你按下电脑开机键的那一刻&#xff0c;主板上的DDR内存就开始了一段奇妙的"热身运动"。这个热身过程专业术语叫做内存训练&#xff08;Memory Training&#xff09;&#xff0c;它是确保内存稳定运行的关键步骤。想象一下&a…...

Lua代码混淆实战:基于Prometheus的Unity项目保护指南

1. 为什么你的Unity项目需要Lua代码混淆 最近有个做独立游戏的朋友跟我吐槽&#xff0c;他花半年开发的游戏上线不到一周就被破解了。更气人的是&#xff0c;破解版直接去掉了内购系统&#xff0c;还挂在第三方平台免费下载。这种情况在游戏圈太常见了&#xff0c;特别是使用Lu…...

CentOS7服务器流量飙升?别慌,用iftop+nload快速揪出‘吃流量’的进程

CentOS7服务器流量异常排查实战&#xff1a;iftop与nload组合拳 深夜的告警铃声突然响起&#xff0c;监控系统显示某台核心业务服务器的带宽使用率飙升至95%。作为运维人员&#xff0c;这种场景并不陌生——可能是业务量激增&#xff0c;也可能是恶意攻击&#xff0c;或是某个失…...

Java 开发 日志技术

1.概述为什么要在程序中记录日志呢&#xff1f;便于追踪应用程序中的数据信息、程序的执行过程。便于对应用程序的性能进行优化。便于应用程序出现问题之后&#xff0c;排查问题&#xff0c;解决问题。便于监控系统的运行状态。2.日志框架JUL&#xff1a;这是JavaSE平台提供的官…...