- 博客(41)
- 收藏
- 关注
原创 eigen中四元数
Eigen库中的四元数使用指南:介绍了四元数的数学结构(q=w+xi+yj+zk)及其在Eigen中的实现(Quaternionf/d)。详细说明了四元数的构造方法(从旋转矩阵或欧拉角)、点旋转操作,并强调了构造参数(w,x,y,z)与内部存储[x,y,z,w]的顺序差异。提供了旋转矩阵与四元数相互转换的代码示例,以及复合旋转的正确计算顺序(yawpitchroll)。特别指出实际应用中容易混淆的参数顺序问题,帮助开发者正确使用四元数进行3D旋转操作。
2025-08-22 09:00:00
406
原创 图像中物体计数:基于YOLOv5的目标检测与分割技术
然而,当物体非常小且密集时,传统的目标检测方法可能会出现较大的误差。本文将介绍一种结合YOLOv5目标检测和图像分割技术的方法,以提高物体计数的准确性,并最终生成一个可以在手机端调用的SO文件。每个小区域的大小可以根据实际情况进行调整,一般来说,小区域的大小应该能够包含一定数量的物体,但又不至于过大,以免影响检测精度。YOLOv5是一种非常强大的目标检测模型,它能够在保证检测速度的同时,提供较高的检测精度。最后,我们将所有小区域的检测结果组合起来,得到整个图像的物体计数结果。3. 在手机端调用SO文件。
2025-08-21 20:43:11
362
原创 基于OpenCV的物体识别与计数
通过上述步骤,我们可以有效地从图像中识别并计数特定类型的物体。值得注意的是,实际应用中可能需要根据具体场景调整参数和算法细节,以达到最佳效果。本文将介绍一种使用OpenCV库实现的高效物体识别与计数方法,并提供一些代码片段以帮助理解各个步骤。计算每个轮廓的面积,并根据设定的面积阈值和其他条件统计符合条件的物体数量。对于每个被识别出的物体,还可以进一步进行距离变换、归一化处理等操作,以便更精确地描述物体特性。形态学操作,例如开运算和闭运算,用于清理图像中的小对象或连接邻近的对象,改善目标物体的完整性。
2025-08-21 13:38:25
225
原创 用 PCL 快速生成5种常见点云数据(附完整代码)
先从生成几种基本的点云数据开始吧!本文带你用 PCL(Point Cloud Library) 生成5种常用类型的点云,并保存为 .pcd 文件,方便后续可视化和处理。本代码使用 C++ 编写,功能是生成5个不同类型的点云文件,用于测试和学习。确保你已经安装了 PCL(Point Cloud Library)。🧩 5种常见的 PCL 点云类型。👉 是学习 PCL 的绝佳起点!保存为 PCD 文件。
2025-08-21 13:19:22
186
原创 用 Eigen 轻松搞定 C++ 矩阵运算(超简单入门教程)
在机器人、SLAM、图像处理等开发中,矩阵运算是家常便饭。而 Eigen 就是 C++ 中最流行、最高效的线性代数库之一。Eigen 虽然功能强大,但上手并不难。掌握这些基础操作,你就可以在 SLAM、机器人、机器学习等项目中轻松处理矩阵了!今天,我们通过一个简单的例子,带你快速入门 Eigen 的基本用法,零基础也能看懂!
2025-08-21 10:25:11
144
原创 ubuntu20中安装eigen库
在 Eigen 中,所有向量和矩阵本质上都是 Eigen::Matrix 模板类的特化版本。Eigen 通过 typedef 提供了大量的内置类型别名(typedef),极大地方便了日常使用。以下是最常用、最推荐掌握的 Eigen 内置类型,广泛用于 SLAM、机器人、图形学等领域。Eigen 是 header-only 库(只有头文件,无需编译链接),所以安装非常方便。Eigen 的头文件会被安装到 /usr/include/eigen3/。✅ 一、常见的内置类型(Built-in Typedefs)
2025-08-21 09:49:09
233
原创 eigen入门了解
Eigen 库通过这些模块提供了全面的线性代数功能,从基础的矩阵运算到高级的数值分析,再到稀疏矩阵和迭代求解器,几乎涵盖了所有常见的线性代数需求。无论是科学研究、工程计算还是机器学习,Eigen 都是一个强大且灵活的选择!Eigen 库是一个非常强大的 C++ 线性代数库,它提供了丰富的功能来处理矩阵和向量运算。Eigen 库涵盖了多种线性代数相关的模块。
2025-08-21 08:50:35
83
原创 一文看懂PCD文件格式
在使用PCL(Point Cloud Library)处理点云数据时,你一定会遇到 .pcd 文件。它是PCL专用的点云数据格式,结构清晰、功能强大。本文用一个实际例子,带你快速理解PCD文件的每一行含义。掌握这些基础知识,你就能轻松读写点云数据,为后续的滤波、配准、分割等操作打好基础!
2025-08-20 19:18:51
174
原创 使用PCL读取PCD点云文件
在点云处理和三维视觉项目中,我们经常需要将点云数据保存到文件中,以便后续加载和分析。本文将通过一个完整的C++示例,介绍如何使用PCL读取 .pcd 格式的点云文件。通过 pcl::io::loadPCDFile,我们可以非常方便地将磁盘中的点云数据加载到内存中,为后续的滤波、配准、分割等处理打下基础。本文示例展示了完整的读取流程,是PCL开发中最基础也是最重要的操作之一。掌握点云的读写,是开启三维点云处理之旅的第一步。2. 从本地磁盘加载一个已有的PCD文件。1.定义一个点云对象。3.打印点云的总点数。
2025-08-20 19:01:32
149
原创 使用PCL保存点云数据:ASCII与二进制格式实战
在点云处理项目中,我们经常需要将处理后的点云数据保存到文件中以便后续使用或分析。本文通过一个简单的C++示例,介绍如何使用PCL(Point Cloud Library)将点云保存为ASCII和二进制格式的PCD文件。
2025-08-20 18:43:20
318
原创 多摄像头多算法智能监控系统设计与实现
在现代智能视频分析场景中,面对大规模、多区域的实时监控需求,构建一个能够同时接入多个摄像头、并为每个摄像头独立运行多种AI算法的系统架构至关重要。本文介绍了一套基于C++实现的多摄像头多算法动态加载方案,该系统具备良好的扩展性与灵活性,适用于复杂工业、安防及行为分析场景。加载绑定算法:读取每个摄像头的abilities数组,为每种算法创建独立的AlgorithmInfo实例。多算法并行:每个摄像头可配置多种AI算法(如人脸识别、离岗检测、睡岗识别等),各自独立运行。
2025-08-20 17:35:12
515
原创 Ubuntu 20.04 安装 PCL 点云库并验证安装(C++)
在三维视觉、自动驾驶、机器人导航等领域,点云数据(Point Cloud)是感知环境的核心数据之一。而 PCL(Point Cloud Library) 是目前最强大、最广泛使用的开源点云处理库。我们来写一个最简单的程序:创建一个包含 3 个点的点云,并打印出来。3.3 创建 CMakeLists.txt。3.2 创建源文件 main.cpp。🔽 2. 安装 PCL 开发库。🧰 1. 什么是 PCL?说明 PCL 已成功安装!✅ 验证安装(命令行)📂 3. 创建测试项目。3.1 创建项目目录。
2025-08-20 08:42:46
247
原创 c++日志宏 INFO(...)
🧱 核心功能设计我们希望 INFO(…💡 实现原理::__printf__FILE____LINE__这需要函数能接收任意数量和类型的参数,这就是“可变参数”。
2025-08-19 20:33:03
321
原创 从零开始理解一个复杂的 C++/CUDA 项目 Makefile
这是一个融合了 C++、CUDA(GPU 编程)、C 语言的复杂项目,可能用于视频处理、AI 推理(如 RetinaFace、SCRFD、TensorRT) 等高性能场景。今天,我们就来逐行解析一个真实项目中的 Makefile,带你揭开构建系统的神秘面纱!你是否好奇:“这么多 .cpp、.cu 文件,是怎么一步步变成可执行程序的?你是否曾经面对一个庞大的 C++ 项目,看到 Makefile 就头大?🌟 总结:Makefile 的构建流程。
2025-08-19 18:37:53
198
原创 从零开始学 Makefile:写一个最简单的 C++ 构建系统
在学习 C++ 的过程中,你可能已经习惯了在 IDE 里点一个“编译”按钮,程序就跑起来了。但当你进入 Linux 环境、参与开源项目,或者想真正理解“程序是怎么从代码变成可执行文件”的时候,你就避不开一个工具: Makefile。别被这个名字吓到,今天我们从一个最简单的例子开始,手把手带你写一个属于你自己的 Makefile,彻底搞懂它的基本结构和工作原理。这个程序非常简单,只用了 ,是 C++ 标准库的一部分,不需要安装任何第三方库。加上 .PHONY 后,make 会忽略同名文件,强制执行命令。
2025-08-19 15:47:47
177
原创 基于 C++ 线程池的多线程目标检测后处理系统设计与实现
在实际的智能视频分析系统中,目标检测(如 YOLOv5)只是第一步。检测结果往往需要进行后续处理:画框、报警、推流、日志记录等。这些操作如果在检测主线程中同步执行,会严重拖慢整体推理速度。本文将带你从零实现一个基于 C++ 模板线程池的异步后处理系统,实现“检测与后处理解耦”,提升系统吞吐量与响应性。🌟 一、系统设计目标🔧 二、核心组件详解。
2025-08-18 14:44:27
599
原创 std::set_symmetric_difference
std::set_symmetric_difference 是 C++ 标准库 头文件中的一个函数模板,用于计算两个已排序序列的对称差集。对称差集指的是:只出现在其中一个序列中,但不同时出现在两个序列中的元素的集合。(集合A - 集合B) ∪ (集合B - 集合A)什么是“对称差集”?
2025-08-15 18:55:41
203
原创 std::copy_if
std::copy_if 是 C++ 标准库 头文件中的一个函数模板,用于从一个源范围中,根据指定条件(谓词)筛选元素,并将满足条件的元素复制到目标范围。
2025-08-15 18:53:49
119
原创 最优配对之匈牙利算法
我们用马氏距离(前面讲的)来衡量“预测框”和“检测框”有多像。D 落单了 → 可能是一个新目标,开启新的跟踪 ID。我们想让每个“预测目标”找到一个“最像它的检测框”。✅ 步骤 3:用最少的“横线 + 竖线”覆盖所有 0。👉 现在有很多“0”,表示“潜在的最优匹配”。如果线数 = 行数(或列数),就可以找匹配了。我们可以把它想象成一个“划线找零”的游戏。目标:用最少的线,把所有的 0 都盖住。🎯 六、匈牙利算法的核心思想(一句话)大小为 nRows × nCols。👉 数字越小,越像,越应该匹配。
2025-08-14 15:06:51
297
原创 opencv中创建卡尔曼滤波
OpenCV 会自动创建以下矩阵:其中KalmanFilter函数需要的参数以及含义如下:📚 卡尔曼滤波简要流程回顾预测阶段(Predict)更新阶段(Update)🎯 举个目标跟踪的例子(8维状态)假设你在用 DeepSORT 风格的卡尔曼滤波:那么这些变量的作用是:🔄 卡尔曼滤波的两个主要函数它们内部做了什么?👉 对应:👉 对应:✅ 总结:OpenCV 变量 ↔ 数学符号 对照表初始化建议:statePost:设为第一次检测结果。
2025-08-14 09:45:02
209
原创 智能指针shared_ptr promise future 条件变量
std::shared_ptr是C++标准库中的一种智能指针,允许多个shared_ptr实例共享对同一资源的所有权,通过引用计数自动管理资源的生命周期。以下是std::shared_ptr的初始化方法及其示例。
2025-08-11 09:25:18
143
原创 c++11 多线程复习整理(生产者消费者 条件变量 互斥锁)
本文将基于给出的C++代码示例,探讨如何实现生产者-消费者模式,并详细解释这段代码的设计思路、需要注意的地方以及其带来的好处。为了确保多线程环境下的安全访问,使用了互斥锁lock_和条件变量cv_来控制对共享资源的访问以及协调生产者和消费者之间的操作。每次成功消费一个图片名称后,都会调用cv_.notify_one()通知可能正在等待的生产者,告知队列现在有了空位,可以继续生产新的图片。增强程序的可维护性和扩展性:这种设计使得添加更多的生产者或消费者变得容易,只需调整同步逻辑即可支持并发度更高的应用场景。
2025-08-07 20:57:16
236
原创 图像跟踪中的卡尔曼滤波
矩阵维度是否需要手动设置?说明F8×8❌ 不需要固定为匀速模型,可“舍去”H4×8❌ 不需要固定只取前4个状态,可“舍去”I8×8❌ 不需要单位矩阵,固定Q8×8✅ 需要用设置,控制预测不确定性R4×4✅ 需要用noise设置,表示检测框误差P8×8✅ 需要用初始化,后续自动更新K8×4❌ 不需要自动计算,无需设置在目标检测中,卡尔曼滤波就像一个“聪明的猜谜者它用F和Q来猜下一帧在哪(预测)用H和R来对比检测框(更新)用P和K来决定信谁更多而FHI。
2025-08-06 21:33:08
806
原创 opencv判断点是否在多边形内 c++
对于“点是否在多边形内”这种经典问题,OpenCV 的 pointPolygonTest 是最佳选择。它简单、高效、可靠,远优于手动实现的射线法。
2025-08-06 14:45:34
205
原创 opencv中绘制多边形区域 c++
定义了一个polygonPoints向量,它包含了多边形各个顶点的位置。然后,我们调用drawlines函数并传入这个多边形顶点的集合来绘制多边形的边界。此外,为了确保多边形是封闭的,我们在drawlines函数中添加了一行代码,用于绘制从最后一个点回到第一个点的线。这样就可以在图像上绘制出一个指定的多边形区域了。
2025-08-06 14:24:15
160
原创 几种常见的路径规划算法
A* 是一种启发式搜索算法,广泛用于找到从起点到终点的最短路径。它结合了Dijkstra算法的最佳路径优先策略和贪心最佳优先搜索的启发式方法。A* 算法使用一个估计函数来评估每个节点到目标的距离,以决定下一个探索的节点。路径规划算法是机器人学、自动驾驶汽车、游戏开发以及其他需要导航和运动规划的领域中的核心技术。根据应用场景的不同,路径规划算法可以分为多种类型。Dijkstra算法是一种用于计算加权图中单源最短路径的经典算法。与A*不同的是,它不使用启发式估计,因此可能在大规模地图上效率较低。
2025-08-05 18:21:03
133
原创 海康工业相机中设备取图流程和取图方式
MV_CC_GetImageBuffer() 需要与 MV_CC_FreeImageBuffer() 配套使用,当处理完取到的数据后,需要用 MV_CC_FreeImageBuffer() 接口将pstFrame内的数据指针权限进行释放。对于原始图像数据,可调用 MV_CC_ConvertPixelTypeEx() 转换图像的像素格式,也可调用 MV_CC_SaveImageEx3() 转换成JPEG或BMP格式的图片,并保存成图片文件。当获取的图像数超过这个设定值,最早的图像数据会被自动丢弃。
2025-08-05 13:41:38
362
原创 无人机单目相机获取目标定位经纬度
该项目和参考的项目的区别在于,没有用到激光测距,由于我的项目中,物体的大小是圆形且一直不变的,所以根据物体的大小和所占的像素多少去等比例计算每个像素所占用的实际大小即可,并且我的项目中无人机上额外安装的usb摄像头,垂直向下安装在无人机上,这样就可以通过摄像头去指定的经纬度附近去搜索目标了,如果指定位置附近没有目标,还有一个区域信息,会在一个四边形区域组成的四组经纬度高度中画Z形路径规划去搜索目标。本项目参考https://zhuanlan.zhihu.com/p/563226795。
2025-08-04 18:41:49
436
原创 ubuntu中 ollama 本地部署模型
首先,访问 Ollama 官方提供的 Linux 下载链接来获取最新的 Ollama 版本。修改配置文件,允许其他客户端调用,默认情况下ollama只能在本机上调用。步骤 1: 下载 Ollama。
2025-08-04 13:38:50
141
原创 jetson nano 中cuda cudnn tensorrt opencv等安装
1、jetpack和jtop的安装安装cuda前需要先安装jetpack安装如因网络原因中断,重复执行最后一句即可。
2025-07-30 11:29:32
269
原创 JETSON NANO 通过sdkmanager 系统烧录
✅ Jetson Nano EMMC 系统烧录与环境搭建完整教程一、准备工作1.1 硬件清单设备 要求主机/虚拟机 Ubuntu 18.04 LTS(推荐 64 位)Jetson Nano 开发板 eMMC 版本(带 16GB 内置存储)电源适配器 5V/4A DC 电源(推荐原厂或高质量电源)USB 数据线 Micro-B 转 USB-A(支持数据传输)跳线帽或杜邦线 用于进入 Recovery 模式显示器与外设 HDMI 显示器、键盘、鼠标(用于首次开机配置)
2025-07-29 15:55:06
590
【老年人异常行为监测】基于YOLOv5的目标检测模型数据采集与动作模拟指南:养老院老人摔倒争吵等危险动作实时监测系统设计
2025-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人