自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Day 14:仿射变换与三个对应点

二维仿射变换的表达式为:其中,六个参数组成一个 2×3 矩阵:将公式展开:不同的参数组合能实现不同变换。变换对应矩阵直观效果平移整体移动缩放改变宽度、高度旋转在图像坐标系中按角度旋转水平剪切矩形倾斜为平行四边形要注意:矩阵中的a,b,c,d是共同决定变换的,不能简单地说a一定是缩放、b一定是旋转。只有在特定矩阵形式下,这些参数才有直接对应的解释。obsidian。

2026-11-05 20:06:14 134

原创 Day 13:旋转、平移、缩放与warpAffine

obsidian。

2026-11-05 19:58:25 213

原创 Day 12:轮廓法与连通域法对比实验

今天实验结束后,你可以形成下面这样的工程判断。情况一:主要研究叶片形状、区域边缘或周长。优先使用,因为它直接提供边界点序列,方便计算轮廓几何特征。情况二:主要研究区域编号、像素面积、区域质心及面积过滤。优先使用,因为它直接提供所需的统计量,而且可以通过labels查询每个像素所属的区域。情况三:需要分析苗行中的植株中心点和形状。可以将两种方法组合:先利用连通域提取候选区域及质心,再根据需要提取轮廓形状特征。不过仍应注意区域不一定与单株一一对应。

2026-11-05 19:45:31 17

原创 Day 11:连通域分析

obsidian。

2026-11-02 10:55:35 284

原创 Day 10:findContours与植株形状分析

obsidian。

2026-11-02 10:42:29 460

原创 Day 9:腐蚀、膨胀、开运算与闭运算

obsidian。

2026-11-02 10:29:29 328

原创 Day 8:Canny边缘检测

obsidian已经学习了 Sobel 算子,知道如何计算图像在 X、Y 两个方向上的灰度梯度。今天我们就要解决一个更进一步的问题:既然 Sobel 已经能找到灰度变化明显的位置,为什么还需要 Canny?核心原因是:Sobel 计算的是梯度响应,而 Canny 会进一步筛选、细化和连接边缘,最终生成更适合后续处理的二值边缘图。今天我们主要完成四件事:理解 Canny 的四个步骤、掌握双阈值与滞后连接、完成农田图像对比实验,以及弄清楚 Canny 与 Sobel 的关系。obsidian。

2026-10-31 10:57:21 167

原创 Day 7:Sobel算子与图像梯度

obsidian。

2026-10-31 10:46:15 341

原创 Day 6:均值滤波、高斯滤波和中值滤波

你可以先把图像噪声理解为:图像中不希望出现的随机数值变化,它们可能干扰真实目标的颜色、纹理或边缘。98 105 9596 103 99中间的 180 与周围明显不同,可能就是噪声。实际拍摄中,噪声可能来自传感器、电路、低照度、高 ISO 等因素。图像压缩也可能引入伪影,但不一定属于随机噪声。

2026-10-30 15:02:58 84

原创 Day 5:threshold与inRange阈值分割

obsidian。

2026-10-30 14:46:16 764

原创 Day 4:BGR、RGB、GRAY和HSV颜色空间

obsidian。

2026-10-29 11:00:27 300

原创 Day 3:resize、ROI裁剪与cv::Mat内存共享

obsidian。

2026-10-29 10:54:24 527

原创 Day 2:图像内存、数据类型与stride

obsidian。

2026-10-28 10:32:35 417

原创 Day 1:深入理解cv::Mat

obsidian。

2026-10-28 10:14:47 256

原创 第四周第五天——重构成类

const;const不是修饰outputPath。才是修饰参数。) const这个成员函数承诺不修改当前 ImageProcessor 对象的状态。

2026-10-27 15:39:00 205

原创 第四周第四天——轮廓提取与面积过滤

你可能觉得:图像都是整数像素,为什么面积不是 int?因为轮廓是由点和几何边界计算得到的,面积结果不一定必须是整数。更合理。

2026-10-25 10:29:45 494

原创 第四周第三天——形态学处理

形态学操作不能凭空决定:到底多大范围算“附近”。kernel也叫:结构元素。意思可以先理解成:创建一个 5×5 的小窗口,形态学处理时用它在图像上滑动判断。膨胀↓腐蚀mask,closed,kernel填补白色目标内部的小黑洞、连接距离很近的白色区域。

2026-10-24 10:06:13 161

原创 第四周第二天——BGR → HSV + 阈值分割

可以先理解成:保存一组三通道数值。

2026-10-23 19:03:06 351

原创 第四周第一天——读图与保存

obsidian。

2026-10-22 10:49:58 279

原创 第三周第七天——git基本操作

obsidian。

2026-10-21 18:50:49 249

原创 第三周第六天——opencv基础

obsidian。

2026-10-19 10:57:26 231

原创 第三周第五天——cmake工程结构

target→ CMake 要构建的一个目标app也是 target。给某个 target 配置东西。main.cpp││ #include▼││ 声明▼“知道 process() 存在”││ 定义▼“process() 真正怎么运行”CMake↓知道要编译哪些 .cpp↓知道去哪里找 .h这两个职责一定分开。

2026-10-19 10:56:01 252

原创 第三周第四天——cmake

东西作用.cppC++ 源代码g++真正编译/链接代码描述项目怎么构建CMake根据配置生成并管理构建系统再加一个:make| 按照生成的构建规则执行实际构建 |↓CMake↓Makefile↓make↓g++↓app这是一种典型情况。

2026-10-17 14:18:20 146

原创 第三周第三天——C++运行环境

obsidian。

2026-10-17 14:16:29 210

原创 第三周第二天——Linux环境操作

你可以把环境变量理解成:当前 shell 给程序提供的一组“环境配置”。echo $PATH表示:取这个变量的值。echo $HOME/home/user││ │ │▼ ▼ ▼进程管理 环境变量 远程操作kill which│ │ │▼ ▼ ▼谁在运行?调用哪个程序?操作哪台机器?ps看谁在运行,PID 是进程编号。PATH决定系统去哪里找可执行程序,which告诉你最终找到了谁。export给当前 shell 及其子进程设置环境变量。

2026-10-16 19:36:15 224

原创 第三周第一天——Linux基本指令

obsidian。

2026-10-16 19:34:10 481

原创 第二周第六天——智能指针

unique_ptr一个所有者│▼Object所有者死亡↓Object 自动死亡shared_ptrp1 ──┐p2 ──┘最后一个拥有者死亡↓Object 自动死亡weak_ptr只观察不负责让 Object 活着。

2026-10-15 19:36:09 97

原创 第二周第五天——队列与lamda

是:最大的优先。Detection就需要告诉它:什么样的 Detection 优先级更高?confidence判断。比较函数lambda自定义比较器所以你今天学 lambda,其实也在给后面的自定义铺路。内容核心思想CV/算法场景queueFIFOBFS、连通区域搜索高优先级先出Top-K、优先处理高置信度目标lambda临时匿名函数排序、过滤、比较规则[=]按值捕获读取外部配置[&]按引用捕获修改外部状态queue解决“按到达顺序处理谁”。解决“当前谁最值得优先处理”。

2026-10-15 19:28:05 110

原创 第二周第四天——vector与map

obsidian。

2026-10-14 10:07:33 77

原创 第二周第三天——类的特性

public:它就是:抽象类。Detector d;因为这个类根本没有完整的detect()实现。Detector不是具体的检测器它只是“检测器这个概念”就像现实里:“动物”是一个抽象类别。猫狗鸟Detector。

2026-10-14 10:05:24 81

原创 第二周第二天——构造函数与析构函数

File 对象出生↓打开文件File 对象死亡↓关闭文件Lock 对象出生↓加锁Lock 对象死亡↓自动解锁以后你会发现:C++ 很多“自动资源管理”的核心,就是利用析构函数。

2026-10-13 16:03:09 609

原创 第二周第一天——类

class Crop不是创建了一个具体作物。而是在告诉编译器:我要定义一种新的类型,它叫Crop。intdouble有点类似。int是 C++ 已经给你准备好的类型。Crop是你自己定义的类型。namecount叫做:成员变量 member variables。Crop类的成员。以后你还会看到一个名字:也是类似意思。Crop crop;

2026-10-13 15:57:43 149

原创 第一周第六天——综合练习

obsidian。

2026-10-12 14:49:03 9

原创 第一周第五天——引用

obsidian。

2026-10-12 14:47:09 319

原创 第一周第四天——指针

int a = 10;int* p意思是:创建一个变量p,它的类型是int*。int*用于保存 int 类型变量地址的数据类型。p = &a;意思是:把a的地址存进p。整句话就是:创建一个指向int的指针p,让它保存变量a的地址。

2026-10-09 10:38:07 303

原创 第一周第三天——vector

10, 20][10]pop_back()意思是:删除最后一个元素。pop_back()没有参数。

2026-10-09 10:34:52 192

原创 第一周第二天——C++基本语法

return 0;#include函数main通常会报错,因为程序执行到main()时还不知道add是什么。以后会学:函数声明。但今天先不用展开。

2026-10-08 20:30:14 270

原创 第一周第一天——C++基本概念

数据类型 变量名 = 值;int age;age = 23;

2026-10-08 20:22:47 150

原创 DINO-YOLO离线下载模型

当我按照DINO-YOLO代码作者要求在服务器上安装环境并使用运行指令运行时,发现会老是试图连接https://huggingface.co/facebook/dinov3-vitb16-pretrain-lvd1689m去下载DINOv3模型,但我的服务器一直连接不到这个网站,并重复连接多次后报错。

2026-01-12 15:15:23 652

原创 DINOv3对自己的数据集进行自监督对比学习训练

1. 训练和评估代码需要 PyTorch 版本 >= 2.7.1 ,并且需要 Linux 环境。2. 我用的python版本是3.113. 按照官网给出的requirements.txt文件安装其他的第三方包。

2025-12-14 21:20:22 914

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除