- 博客(129)
- 收藏
- 关注
转载 OpenCV入门:第6章 边缘检测
在上一篇文章中,我们介绍了图像的梯度结算来检测图像边缘,但是我们之前只是检验了大小,不知道具体方向。接下来我们介绍Canny边缘检测,它是一种经典而有效的 边缘检测算法。
2026-04-11 11:46:39
2
转载 OpenCV入门:第4章 图像梯度计算
变化越突然,梯度越大;变化越平缓,梯度越小。所以:求梯度 ≈ 找边缘想象一行像素亮度:在图像处理中,梯度是指图像中像素灰度变化的速率或幅度,我们先来看下面这张图假设我们想要计算出A点的梯度,我们可以发现A点位于边缘点,A点左边为黑色,右边为白色,而计算图像的梯度可以提取出图像中的边缘信息,我们常用的方法是使用Sobel算子或Scharr算子进行梯度计算。接下来我们分别来看看具体是如何做的。
2026-04-11 11:28:14
2
转载 OpenCV入门:第三章 图像形态学操作
图像形态学是数字图像处理中一套基于几何形状对图像进行分析和处理的方法,核心思想是用一个 “结构元素” 去探测、修改图像中的形状,从而实现去噪、分割、提取轮廓、细化等操作。就像用一把固定形状的小刷子 / 小模板,在图像上扫一遍,根据刷子和图像区域的重叠关系,决定像素保留还是消除。(1)核心概念1、结构元素(Structuring Element)◦ 形态学操作的 “工具”,可以是方形、圆形、十字形等。◦ 决定了处理的形状偏好和精细程度。2. 主要针对二值图像。
2026-04-11 10:50:19
4
原创 OpenCV入门:第二章 图像阈值与平滑处理
这是 OpenCV 中最基础、最核心的函数,作用是根据像素亮度,把灰度图转换成只有两种(或少数几种)亮度的图像,常用于目标分割、轮廓提取、背景分离等场景。
2026-04-10 22:24:29
177
原创 OpenCV入门:第一章 图像的基本操作
在计算机眼里,图像不是我们看到的彩色画面,而是。每个彩色像素会被拆成红 (R)、绿 (G)、蓝 (B) 三个独立的亮度分量,每个分量用 0-255 的数字表示亮度,最终整幅图就是,所有图像处理本质都是对这些数字做数学运算。如果这个图片的h是500,w是500,使用矩阵表示[500,500,3]。3表示3个通道。
2026-04-10 21:11:02
176
原创 Antipodal Robotic Grasping using Generative Residual Convolutional Neural Network 模型代码
本文介绍了一个基于PyTorch实现的机器人抓取检测网络模型。该模型采用U型残差结构,包含下采样编码器、残差瓶颈层和上采样解码器三部分,通过多分支输出层预测抓取位置、角度和宽度等参数。核心组件包括GraspModel基础框架和带批量归一化的ResidualBlock残差模块。模型通过Xavier初始化、批量归一化和Dropout等技术优化训练稳定性,适用于机器人视觉抓取任务。其U型结构和多分支输出设计也可借鉴于其他像素级回归任务。
2026-01-19 09:55:27
988
原创 Ubuntu 20.04 安装Anacada
下载Anaconda3 2021.11安装包(64位) wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh。执行后终端提示符会略有变化,此时已进入 bash 环境,可重新运行 Anaconda 安装脚本(若前面安装未完成)。3、输入你的系统登录密码,回车确认(输入密码时终端不显示字符,正常现象)。:修改完成后,必须关闭所有终端,重新登录系统(或重启电脑),更改才能生效。5、验证是否生效:重新打开终端,执行。
2026-01-11 21:41:25
1179
原创 四元数法基础
四元数的一般形式:实部(对应 “旋转的幅度”);虚部系数;虚部单位,满足规则:i2=j2=k2=ijk=−1且反对易jk=i,kj=−i;ki=j,ik=−j(旋转顺序会影响结果)
2026-01-05 20:55:06
297
原创 实现蓝牙与手机通信
中断 vs 轮询中断:数据来了硬件自动通知你(效率高)轮询:你不断检查有没有数据(简单但耗CPU)回调函数你把处理函数"注册"给我我收到数据时"回调"你的函数实现模块解耦:蓝牙模块不关心数据怎么处理UART通信三要素波特率一致数据格式一致物理连接正确。
2025-12-22 23:05:16
922
原创 JDY-23蓝牙基本配置(上)
JDY-23是一款基于蓝牙5.0协议的超低功耗BLE(低功耗蓝牙)模块,兼容BLE4.0/4.2标准,专为物联网(IoT)设备设计。其核心特性包括低功耗、远距离传输(60米)、支持AT指令灵活配置,适用于智能家居、工业控制、健康监测等场景。
2025-12-22 22:11:40
727
原创 UR5机械臂MoveIt+Gazebo联动配置笔记
实现UR5机械臂在Gazebo仿真环境中通过MoveIt API进行控制时,遇到以下问题:MoveIt规划成功,控制器报告执行完成但Gazebo中的机械臂模型完全不动Gazebo控制台出现硬件接口语法警告和PID参数缺失错误│ ├── gazebo_controllers.yaml # Gazebo控制器配置│ ├── ros_controllers.yaml # MoveIt控制器连接配置│ ├── simple_moveit_controllers.yaml # MoveIt内部控制器配置。
2025-12-22 16:06:16
1076
原创 第2章 空间描述和变换
本系列课程将深入探讨机械手臂的运动学与操作。在正式进入机械手臂的具体内容之前,我们需要补充一些必备的数学基础,核心在于如何精确地描述一个“刚体”(Rigid Body)的运动状态。这是因为在后续分析中,我们通常将机械手臂的各个部件视为刚体来处理。2.1 概述。
2025-12-12 12:15:55
631
原创 2.2 话题通信
在功能包下创建msg文件夹,msg文件夹下创建Student.msg文件,文件内容如下:int32 age/*需求:以某个固定频率发送文本学生信息,包含学生的姓名、年龄、身高等数据。*/// 1. 包含头文件// 命名空间简化// 3. 定义节点类public:// 3-1. 创建发布方// 3-2. 创建定时器(500ms触发一次)500ms,private:// 3-3. 组织消息并发布stu.name = "张三";// 打印日志。
2025-12-09 20:23:18
1035
原创 驱动310电机
当使用PWM控制来实现调速功能时,H桥可以操作在两种不同的状态:快衰减或者慢衰减。下面的表是 “用 PWM 时” 的控制逻辑,(3)电机怎么正转 / 反转?—— 电流的 “方向开关”(2)什么是 “死区”?—— 电机的 “启动门槛”(1)什么是 PWM?—— 电机的 “电子油门”(脉冲信号,对应 “油门深浅”),另一个是。
2025-12-07 11:17:11
751
原创 1.4 ROS2 集成开发环境搭建
和大多数开发环境一样,理论上,在 ROS2 中,只需要记事本就可以编写基本的 ROS2 程序,但 是工欲善其事必先利其器,为了提高开发效率,可以先安装集成开发工具和使用方便的工具:IDE、 终端、git。
2025-12-06 20:02:59
1136
原创 解决:/dev/sda3: recovering journal/dev/sda3: clean, 363692/1277952 files, 4854308/5110784 blocks
由于sda3内存爆满,导致打不开虚拟机。
2025-12-06 18:00:34
987
原创 1.3 Ros2快速体验
1.需求编写 ROS2 程序,要求程序运行时,可以在终端输出文本"Helo World"。2.准备(创建工作空间)无论是使用 C++还是 Python 编写 ROS2 程序,都需要依赖于工作空间,在此,我们先实现工作空 间的创建与编译,打开终端,输入如下指令:mkdir -p ws00_helloworld/src #创建工作空间以及子级目录 src,工作空间名称可以自定义cd ws00_helloworld #进入工作空间colcon build #编译。
2025-12-06 15:29:02
1169
原创 Moveit编程之关节目标和位姿目标
1.1.1 代码解释一、代码使用的 MoveIt! 核心接口上述代码核心使用了 MoveGroupCommander 接口(moveit_commander 库的核心类),该接口是 MoveIt! 为用户提供的高层级 Python API,用于简化机械臂运动规划、目标设置、轨迹执行等操作,无需直接调用底层规划器接口,直接面向 "规划组(Planning Group)" 操作。除代码中使用的功能外,该接口还支持以下核心能力:
2025-12-01 11:21:33
320
原创 给机械臂添加移动底盘
mesh filename="package://myrobot_description/meshes/wheel.dae" /> 车轮的模型。下面是底盘base_link与arm_base_link的关节。
2025-11-25 15:16:00
248
原创 使用URDF给机械臂建模
本文详细介绍了使用URDF(Unified Robot Description Format)构建机械臂模型的完整过程。通过XML格式定义了机械臂的各个组件,包括底座(圆柱体)、三个旋转关节连接的连杆(长方体/圆柱体)以及末端执行器(包含两个可移动的夹爪)。每个组件都包含视觉(visual)、碰撞(collision)和惯性(inertial)属性配置,并详细说明了关节类型(旋转/平移)、运动限制和动态参数。文章还提供了完整的URDF代码实现,包括底座与第一个连杆的详细设计说明,以及如何通过launch文件
2025-11-24 21:10:42
1313
原创 Linux虚拟机如何将文件传输到Window系统下
本文介绍了在Linux虚拟机中压缩文件并传输到Windows系统的两种方法:1)通过图形界面右键压缩或终端使用zip命令;2)使用WinSCP工具通过SFTP协议传输。详细说明了开启SSH服务、查看IP地址等准备工作,以及WinSCP连接和文件拖拽传输的具体步骤,同时总结了SSH服务的相关操作命令。
2025-11-24 16:46:01
1259
原创 第一节 STM32 宏和枚举的使用
本文介绍了一个基于STM32标准库的RGB灯控制接口实现。该接口通过枚举和宏定义实现了直观易用的控制功能,主要包括:1. 使用car_RGB和RGB_Color枚举分别定义灯位置(左/右/双侧)和颜色(7种颜色),提高代码可读性和防错性;2. 通过多级宏定义实现GPIO控制,包括基础电平宏、单灯控制宏、组合控制宏和关灯宏,简化代码编写;3. 展示了枚举与宏的配合使用方式,实现了"语义清晰、易扩展、好维护"的控制接口。该设计避免了直接操作底层硬件,使开发者可以更直观地控制RGB灯的状态切换
2025-11-21 11:11:37
1054
原创 第4节 检测亚博小车电池电量
摘要:本文介绍了基于STM32的ADC电压采集系统实现方案。系统使用STM32F103芯片,通过ADC3模块采集GPIOF_7引脚的模拟电压信号,转换为0-3.3V电压值。程序采用模块化设计,包括主程序main.c、串口通信Serial.c和AD转换AD.c三个主要模块。系统通过串口USART1以9600波特率输出实时电压值(精度0.01V),每秒采集一次。ADC模块配置为12MHz时钟、55.5周期采样时间,采用独立模式进行单次转换。串口模块实现了数据包收发、格式化输出等功能,为系统提供了可靠的数据传输接
2025-11-10 20:05:04
290
原创 第3节 STM32 串口通信
该代码实现了STM32单片机通过USART1串口向电脑端发送数据的功能。主要内容包括:1)初始化USART1串口(9600波特率、8位数据位);2)实现单字节、数组、字符串及格式化数据发送功能;3)通过fputc重定向支持printf输出。使用时需注意:正确设置波特率,交叉连接TX/RX线,选择匹配的串口模式(文本/HEX)。代码提供了多种数据发送方式,包括底层字节发送和高级格式化输出,可满足不同场景需求。
2025-11-09 12:13:10
498
原创 第7节 神经网络
本文介绍了PyTorch中卷积层、池化层、非线性激活函数和线性层的核心概念与实现方法。主要内容包括:1)nn.Conv2d卷积层的参数配置与计算过程;2)最大池化、平均池化等池化操作的作用与实现;3)ReLU和Sigmoid等非线性激活函数的特性比较;4)线性层的原理与数据摊平方法。通过CIFAR10数据集上的代码示例,展示了各层在实际应用中的使用方法,包括输入输出维度变化、参数设置等关键细节。这些基础组件构成了深度学习模型的核心架构,为构建复杂神经网络提供了必要工具。
2025-08-18 11:11:01
627
原创 第6节 torch.nn介绍
PyTorch中的torch.nn.Module是构建神经网络的基础类,提供网络构建、参数管理、设备转换(CPU/GPU)和训练/评估模式切换等功能。关键方法包括:__init__初始化网络层,forward定义前向传播,parameters获取可学习参数,to实现设备转移,train/eval切换模型状态。通过继承Module类,用户可以自定义网络结构(如示例中的Conv2d层),并自动管理参数和计算过程。Module还支持模型参数的保存与加载,是PyTorch神经网络开发的核心组件。
2025-08-13 23:00:13
804
原创 第4节 Torchvision
Torchvision 是PyTorch官方推出的计算机视觉工具库,集成了常用的数据集、模型架构和图像变换工具,极大简化了计算机视觉任务的开发流程。本文将围绕的核心功能展开,重点讲解图像变换(transforms)和数据加载(datasetsDataLoader)的使用方法。
2025-08-13 18:02:33
883
原创 第4节 Transforms使用
PyTorch中的torchvision.transforms是一个强大的图像预处理工具库,提供多种变换操作来增强数据并适配神经网络输入。主要包括基础变换(如ToTensor、Normalize)、尺寸调整(Resize、RandomCrop)、色彩变换(ColorJitter、RandomRotation)以及组合变换Compose。这些操作能有效增加数据多样性、防止过拟合并提升模型泛化能力。文章详细介绍了各类变换的用途、参数配置及实现方法,包括图像类型转换、标准化处理、尺寸调整等核心功能,并展示了如何通
2025-08-13 10:30:33
657
原创 第3节 TensorBoard
本文介绍了TensorBoardX在PyTorch中的应用,重点讲解了SummaryWriter类的使用。TensorBoardX是PyTorch的可视化工具扩展,通过将训练指标写入事件文件,实现训练过程的实时监控和分析。文章详细说明了SummaryWriter的常用方法:add_scalar()记录标量数据(如损失值)、add_image()记录图像、add_histogram()记录参数分布等,并提供了具体代码示例。特别强调了add_scalar()和add_image()的参数配置及注意事项,包括数据
2025-08-12 09:51:57
914
原创 第2节 PyTorch加载数据
PyTorch数据处理实战:构建昆虫图像数据集 本文介绍了PyTorch中Dataset和Dataloader的核心功能,重点讲解了如何构建自定义图像数据集。Dataset类主要负责数据获取和编号,需要实现__getitem__和__len__方法;Dataloader则负责数据打包。通过实战演示了使用PIL.Image读取图片、处理绝对/相对路径、以及利用os模块管理文件路径。最后实现了一个昆虫图像数据集构建工具MyData类,能够从指定文件夹读取蚂蚁和蜜蜂图像并合并成完整训练集。该工具支持图像可视化,为
2025-08-11 16:36:26
861
原创 第六节 Gradio搭建Web GUI
Gradio是一个开源的Python库,用于快速构建机器学习交互界面。它支持多种输入输出类型(文本、图像、音频等),无需前端经验即可通过简单代码创建功能完善的Web应用。本文介绍了Gradio的核心组件(输入/输出/布局组件)及其在YOLOv5荔枝分类项目中的应用实现。项目通过Gradio的Interface模式构建了包含图像上传、参数调节和结果展示的交互界面,并提供了实时检测功能。Gradio的简单易用性使其成为展示机器学习模型的理想工具。
2025-08-10 08:51:48
891
原创 第五节 Pyside6可视化界面
本文介绍了使用PySide6开发基于YOLOv5模型的图像检测图形界面程序。主要内容包括:1)PySide6安装及Qt Designer工具使用;2)UI界面设计方法;3)程序功能实现,包括图片和视频文件选择、YOLOv5模型加载、检测结果显示等功能。程序通过PySide6实现图像处理界面,调用训练好的YOLOv5模型进行目标检测,支持图片和视频两种输入方式,并将原始画面和检测结果分别显示。文中提供了完整的Python实现代码,涵盖了从UI设计到模型调用的完整开发流程。
2025-08-07 22:00:14
776
原创 第三节 YOLOv5数据集构成
标注工具3.1数据集收集3.3.1收集1)、公开数据集网站2)、自作数据集:(1)、可以自行使用手机进行拍摄。然后使用labelimg进行标注。(2)、网络爬取图片,然后使用labelimg进行标注。代码运行结果:(1)、网络下载的图像大小不一,要进一步编写代码将图片的尺寸大小修改成符合模型的输入图像尺寸大小。调节图片大小640 X 640代码)(2)、网络爬虫的图像可能模糊不清甚至下载与数据集不相关的图片,需要人工筛选。
2025-08-06 21:39:06
1027
原创 解决yolov5的数据集找不到。Dataset not found , missing paths
path: C:\Users\Desktop\yolov5-7.0\datasets # ✅ 必须是你改名后的完整路径。我的错误之处是我的数据集的文件夹结构错误,导致YOLOv5 尝试加载。程序会执行指令,运行YOLOv5的train.py文件。确保路径和文件夹名一致(大小写、空格都一样)字段,如果它指向了错误路径(比如默认的。YOLOv5 会自动去读取这个文件里的。如果找不到,说明结构不对,必须重新整理!),就会强行下载 COCO 数据集!文件中配置的路径不正确!中定义的数据集失败了。
2025-08-06 16:15:28
592
原创 跑yolov5的train.py时,ImportError: Failed to initialize: Bad git executable.
遇到Git执行程序错误问题,错误显示GIT_PYTHON_REFRESH环境变量设置无效或Git可执行文件未正确配置。解决方案是:1) 从官网下载安装Git;2) 安装完成后重启终端并验证git --version命令;3) 确保Git路径已加入系统环境变量PATH。安装成功后,重新运行程序即可解决该导入错误。关键步骤是正确安装Git并确保其可执行路径能被Python识别。
2025-08-05 21:50:42
394
原创 jupyterlab安装失败:原因是python版本太低不兼容
本文针对Python安装jupyterlab时出现的版本不兼容和依赖缺失问题,提供了分步解决方案:1)检查并升级Python至3.9+版本;2)创建Python3.10的conda虚拟环境;3)在新环境中安装jupyterlab;4)通过版本检查确认安装成功。重点强调必须使用Python3.9以上版本才能解决兼容性问题,并给出了完整的命令行操作流程。
2025-08-04 11:38:44
1757
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅