自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 资源 (2)
  • 收藏
  • 关注

原创 使用Eigen库进行(X-Y-Z固定角坐标系)下的矩阵、RPY角、四元素之间的转换

固定一词指的是旋转是在固定的(不运动的)参考坐标系中确定的。也成翻滚角(Roll)、俯仰角(Pitch)、偏转角(Yaw).运行结果和输入结果一致,前提是输入要在合理范围内!

2023-06-09 11:37:16 24

原创 明度补正(基于OpenCV实现)

光源不足够稳定,不同时刻排出的图片的平均亮度不足够稳定时,可以采用明度补正的办法。我们往往需要一张理想的模板图作为标准的亮度水平,其余的图要往模板上尽可能的接近。

2023-05-20 23:32:59 39

原创 最小二乘least-squares拟合曲线(三次或多次)

基于最小least-squares去拟合出多次曲线,考虑到了所有的样本点,因此这种方法对噪声敏感,尤其是遇到较为明显的噪声时,曲线的形状易受干扰。

2023-05-07 23:11:20 55

原创 基于OpenCV(C++)实现的RANSAC随机抽样一致性的曲线拟合(二次)

这篇文章与其类似,只是从拟合直线变为拟合曲线(二次)。有时候只懂得拟合直线可能是不够的,甚至只拟合二次曲线都不一定能满足实际需求。但好在我们可以触类旁通,举一反三。对于学习算法的人,最重要的就是理解它的思想,久而久之形成自己的思想体系,以后遇到问题的时候就能在脑子里闪现出方案。活学活用四个字很简单,但做起来却是很难很难,跟做人一样,活到老学到老。

2023-04-04 23:11:17 486

原创 基于OpenCV实现的RANSAC随机抽样一致性直线拟合

该方法最早是由Fischler和Bolles提出的一种鲁棒估计方法,最早用于计算机视觉中位姿估计问题,现在已广泛应用于已知模型的参数估计问题中。其思想比较直观和容易理解,即可从坐标点中随机抽取两点,计算一条直线,然后判断所有的点与该直线的吻合程度,不断重复直到挑选出最好的。w为点集中内点的比例,一般可以在初始时设置一个较小值,如0.1,然后迭代更新;n为模型参数估计需要的最小点个数,直线拟合最少需要2个点。本文介绍基于ransac随机抽样一致性随机抽样一致性的直线拟合方法,涵盖一下的内容。

2023-03-16 20:12:26 170

原创 OpenCV中phase函数及其输出的角度

输出的四个角度分别为: 45(第一象限平分线) , 315(第四象限平分线) , 135(第二象限平分线) , 225度(第三象限平分线)。而c++中atan2函数是通过正切值返回弧度的,并通过判断x,y的正负决定象限,因此c++中atan2函数值域是从-Pi到Pi的。在图像坐标系 (图中XY)中:phase输出的角度范围为:0~360,顺时针旋转方向(来计算角度,计算精度大约为0.3弧度,当x,y相等时,angle为0。默认为false,即弧度,当置为true时,则输出为角度。phase函数根据函数。

2023-03-15 15:52:37 86

原创 VS2017中集成QT环境,Qt关键字下面出现红线,无法解析

可以看到,工程默认的附加包含目录已经含有Qt_INCLUDEPATH_,但是电脑上并没有Qt_INCLUDEPATH_这个环境变量。如果不想设置 Qt_INCLUDEPATH_环境变量,那么就在VS中添加附加包含目录。那么新建Qt_INCLUDEPATH_变量,然后重启VS即可。右键打开工程属性页。

2023-03-09 11:40:33 155

原创 如何在微软官网上下载旧版本的visual studio

4.到这里就可以点击下载自己想要的版本了。3.下拉到最后,找到“1.进入微软官网首页,2.下拉,直到找到“”,如下图,点击,进入下一界面。想在微软官网下载旧版本的VS.”,如下图,点击进入下一界面。

2023-03-01 23:59:28 1220

转载 Max Pooling和 Average Pooling的区别,使用场景分别是什么?

最大池化可以提取特征纹理, 最大池化提取边缘等“最重要”的特征平均池化可以保留背景信息,平均池化提取的特征更加smoothly当特征map中的信息都具有一定贡献的时候使用AvgPooling,例如图像分割中常用global avgpool来获取全局上下文关系,再比如网络走到比较深的地方,这个时候特征图的H W都比较小,包含的语义信息较多,这个时候再使用MaxPooling就不太合适了, 是因为网络深层的高级语义信息一般来说都能帮助分类器分类。

2023-01-29 16:17:48 485

原创 图像旋转任意角度及其后图中点坐标的对应变化

图像中有一个点P, 将图像旋转任意角度(默认旋转点为图像中心)后,求旋转后的图像?求原图中的点P在旋转后图像中的坐标?问题分为2大步去解决。1)得到旋转矩阵.主要是借助于getRotationMatrix2D算子。getRotationMatrix2D得到的矩阵为2行3列。2)计算旋转后图像的新大小,旋转后图像的宽高发生变化。此外,图像的中心位置也发生偏移,需要进行偏移量调整。

2023-01-28 14:17:58 271

原创 常用激活函数的比较、激活函数非0中心导致的问题

(神经网络:激活函数非0中心导致的问题)

2023-01-05 11:25:23 88

原创 手眼标定之九点法

包含使用背景、方法简述、案例代码。

2022-12-29 19:20:11 1331

原创 神经网络中常用的权重初始化方法及为何不能全初始化为0

在一个给定的区间[-r,r]内采用均匀分布来初始化参数。超参数r的设置可以按照神经元的连接数量进行自适应的调整。参数从一个固定均值(比如0)和固定方差(比如0.01)的高斯分布进行随机初始化。

2022-12-28 17:56:36 721

原创 Win10从零安装、训练、部署yolov5 6.x一条龙实战案例

Win10 64位;:英伟达GTX 1050TI(配置较低):pytorch 1.7.1(python 3.6),基于Anaconda环境.:包含3类案例,1) OpenCV DNN(C++ 、Python,使用CPU进行推理),若想通过 OpenCV DNN利用GPU进行推理,则必须编译支持CUDA的OpenCV库;本人 只有CPU版本的OpenCV 4.5.4,没有尝试CUDA版本的OpenCV推理。往往在工程部署中,设备端是没有GPU的,所以本人也不想侧重于GPU推理。

2022-12-25 21:46:05 371 1

原创 深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解

知乎江大白,墙裂推荐!

2022-12-22 11:21:02 120

原创 C++开发面试常考

C++后台开发面试常考-pudn.com

2022-12-21 16:07:05 52

转载 一文讲清楚FPN+PAN结构、SPP结构

FPN 高维度向低维度传递语义信息(大目标更明确)PAN 低维度向高维度再传递一次语义信息(小目标也更明确)深层的feature map携带有更强的语义特征,较弱的定位信息。而浅层的feature map携带有较强的位置信息,和较弱的语义特征。FPN就是把深层的语义特征传到浅层,从而增强多个尺度上的语义表达。而PAN则相反把浅层的定位信息传导到深层,增强多个尺度上的定位能力。

2022-12-20 15:42:47 2252

原创 什么是SPP网络

例如:最后一层特征图大小为6*6*10,(width,hight,channels),global average pooling就是将6*6大小的特征图平均采样为一个值,这样最后就输出1*10大小的特征向量,这种方式就只和通道数有关,而与特征图大小没有关系了。使用不同的size,stride,对全连接层前的卷积层进行不同池化大小的pooling,然后拼接,这样最终的输出一定是(p1*p1+p2*p2+…2)替换网络中的全连接层,对最后的卷积层使用global average pooling。

2022-12-20 14:53:22 868

原创 深度学习基础知识---梯度弥散 梯度爆炸

防止过拟合:在网络的训练中,BN的使用使得一个minibatch中所有样本都被关联在了一起,因此网络不会从某一个训练样本中生成确定的结果,即同样一个样本的输出不再仅仅取决于样本的本身,也取决于跟这个样本同属一个batch的其他样本,而每次网络都是随机取batch,这样就会使得整个网络不会朝这一个方向使劲学习。1)没有它之前,需要小心的调整学习率和权重初始化,但是有了BN可以放心的使用大学习率,但是使用了BN,就不用小心的调参了,较大的学习率极大的提高了学习速度。但如果数据的分布一直在变,学习就很难了。

2022-12-19 16:12:10 917

原创 关于在QT子线程中使用QTimer的几点体会

2)主线程发送信号后,让子线程去控制QTimer启动,但QTimer会奇怪的不启动(无法触发定时器timeout槽函数)。但可以在主线程里面去启动子线程的QTimer对象(要暴露出public接口),同样也可以在主线程里面去关闭子线程的QTimer对象。5)个人不太建议在QT子线程中使用QTimer做一些定时任务,操作起来不是很友好,尤其是在启动、退出、消息处理实时性把控等方面。3)在程序退出时,当子线程中的QTimer还在运行时,会出现错误,应该先关闭子线程中的QTimer。

2022-12-15 16:09:29 1017

原创 qt信号与槽连接的书写规范

在传递int,double,char,bool,float等类型的时候没问题,但是传递比如QList类,或者自定义的结构体、类等时,连接将会失败。3.信号和槽之间有参数传递,但是使用connect的时候在槽函数或者信号或者二者同时加入了形参,比如下面的两个connect,第一个连接因为有形参,不会连接成功。2.信号和槽之间存在参数传递,但是二者的参数数量或者类型不一致(信号里的参数数量可以多于槽函数里的参数数量,但是二者都有的参数,类型必须对应);5:connect函数书写不规范,以下2种方式是对的.

2022-12-12 14:28:32 327

转载 mAP@0.5与mAP@0.5:0.95的含义

在COCO数据集中,更关注预测框位置的准确性,AP值是针对多个IoU阈值的AP平均值,具体的就是在0.5 和0.95之间取10个IoU阈值(0.5、0.55、0.6 ..... 0.9、0.95)。目标检测问题中,算法通常输出一个预测框(bounding box)来标识检出目标的位置,要衡量这个预测框与目标的实际位置(ground truth)的准确度,可以使用IoU指标。我们如果把所有预测结果对样例进行排序,排在前面的是“最可能”的正例样本,以查准率为纵轴、查全率为横轴作图,得到一条”P-R曲线”。

2022-11-22 09:46:15 2302

原创 pytorch自定义图像分类训练+OpenCV部署实战项目案例

训练时:visdom等等插件,代码中需要什么包就执行对应的安装命令即可。模型部署及推理时:导出网络模型时安装onnx工具包、OpenCV4.5.4(C++部署)、VS2017(VS2019也可,VS2015没测试,应该也可以)

2022-11-11 22:16:26 1155

原创 程序日志模块的两种模式

程序员都知道程序的运行日志在不少时候都非常有用,利于排查、理清逻辑。一般而言,日志都按天生成,并且具备自动清理多少天以前的旧日志,避免无限增长占用磁盘。下图展示了2种日志模式。

2022-11-07 16:06:02 165

原创 使用OpenCV求解物体(轮廓)的旋转角度的案例

在本人早期的博客里面介绍了 3种不同的方式去求解图像(轮廓)的旋转角度。今天着重提一下使用PCA(Principal Component Analysis)对轮廓进行主成分分析,进而得出物体的旋转角度。PCA是机器学习里面进行数据降维的常用方法之一。假设你有一组2D点,如上图所示。每个维度都对应于您感兴趣的一个特性。在这里,有些人可能会说点是按随机顺序设置的。然而,如果看得更仔细,你会看到一个线性模式(用蓝线表示),这是很难忽略的。主成分分析的一个关键点是降维。降维是指减少给定数据集的维数的过程。

2022-10-31 10:31:31 968

原创 OpenCV实战案例之宽高度测量

实际项目中,很可能会遇到用视觉测量工件的高度、宽度(也可为直径)的情形,毕竟这类型也比较常见嘛!一般而言测量工件尺寸往往离不开物体的轮廓检测。提到轮廓就自然想到了边缘检测、二值化等一系列关联手段。

2022-10-26 13:47:09 1950

原创 基于OpenCV实现的多角度、多目标模板匹配项目实战案例

本案例采用NCC的匹配+金字塔(为了加速)思想,基于OpenCV实现的多角度、多目标模板匹配(不支持尺度不变)。若研究旋转+尺度不变性的匹配,请参考本人的《OpenCV实现多角度多尺度模板匹配(基于形状)》本案例提供代码(内含详细注释)+原始图像。

2022-09-14 17:04:38 3039 16

原创 Window 10下SQL Server的安装配置以及C++使用案例

参照下面这篇博客实现即可。里面提供了安装包下载方式(百度网盘有点慢)、安装及配置步骤。

2022-09-06 08:57:23 622

原创 C++获取系统毫秒级时间(自1970年1月1日至今的毫秒数)

/跟系统时间相关的。

2022-08-30 16:20:18 553

原创 HoughLines获取的角度说明

上图中,x/y分别为图像的X轴/Y轴(图像坐标系),HoughLines获取的是直线A与Y轴负方向的夹角(黄色箭头线顺时针旋转a度与直线A重合)。//theta为直线与Y轴负方向的夹角,以Y轴负轴为起始轴,逆时针旋转到直线的角度。//theta:弧度线条旋转角度( 0:垂直线;//极半径r:离坐标原点((0, 0)(也就是图像的左上角)的距离.Image必须是8位单通道图(可以使灰度图、二值图、边缘图等)Theta:角度分辨率,一般为CV_PI/180。Stn:(猜测)角度缩放。......

2022-08-17 16:35:34 233

原创 如何使用OpenCV在图像中抠出指定的颜色区域

我们往往需要在图像中抠出指定颜色的区域。在实际工况下这种指定颜色不是简单的纯色,往往难以单一的用R G B的某个范围值去确定。本文以PhotoShop为基准,在一副彩色图中按照提取指定范围内的HSV色彩空间。主要流程分为2步: 在PS中确定HSV的各自的范围--->转换值域后使用OpenCV提取颜色区域。......

2022-08-17 10:45:31 2871

原创 OpenCV实现多角度多尺度模板匹配(基于形状)

主要流程就是两步1.制作模板2.开始匹配(使用模板在搜索图像上进行匹配)制作模板对所有的模板进行特征提取,这边使用类似于canny边缘提取的算法来提取特征。开始匹配对搜索图像提取特征,将所有的模板在搜索图像上进行相似度计算,然后滑动窗口直到匹配完成。代码实现。三个主要的函数功能:制作模板(MakingTemplates),加载模板(LoadModel),匹配(Matching).........

2022-08-11 16:20:51 4452 5

原创 元器件正反(极性)检测案例

1.判断准则 元器件的中间有一条近似于盘子状的分割线,如果盘子开口是倒扣向下的,则为PASS, 如果盘子开口是向上的,则为FAIL. 2.算法步骤1)为节省运算时间,将原图的宽高均缩小一半。2)提取器件的轮廓。采用HSV过滤(在PhotoShop上先确定好H/S/V的上下界)、形态处理、轮廓查找+尺寸筛选3)求上述所得轮廓的最大内接圆。含圆心坐标与半径.4) 以圆心坐标为参照点,按照先验经验扣取出ROI。5)对ROI进行模糊滤波,与ROI原图进行作差处理。6...

2022-08-04 15:25:00 319

原创 Windows下MySQL数据库的安装、配置及C++使用案例

注意按照文中提示,配置好环境变量。

2022-08-02 11:41:34 345

原创 基于OpenCV实现的图像拼接(配准)案例

-VS2015 C++-OpenCV 4.5.1-Windows 10 64位 Note: 两幅图像的拼接需要满足基本条件,一是图像本身要层次细节纹理丰富,不可单调重复(比如两张不同角度拍摄的棋盘网格图、重复单调的瓷砖墙/条纹等等是无法拼接的),二是两张图要有一定的重叠部分。1、对每幅图片进行特征点提取(AKAZE、sift、surf、ORB均可);2、对特征点进行描述和匹配;a、将一个点附近邻近点点采用K近邻算法归为一类点b、挑选出优秀的匹配点(good match);c、将匹配点连接在一起;3、进

2022-07-29 14:48:14 1788 1

原创 图像视角矫正实战案例--- 含透视变换矩阵(单应矩阵)/findHomography 与 getPerspectiveTransformd的区别

举个简单例子,在实际机器视觉场景中,由于安装误差,相机的光轴与被测基准平面之间往往不是严格的垂直关系。想靠机械加工去保证很高的垂直度,往往实现起来较为困难。由于上述的垂直度误差,那么一个标准矩形的物体在图像中可能是一个梯形,甚至不是梯形(对边皆不平行)。如下图所示这时候,为了能正常进行后续的图像处理及像素定位,我们需要做就需要视角矫正。需要求出当前拍摄图像与期望图像之间的变换关系(透视变换矩阵(单应矩阵)).............

2022-07-28 15:48:02 1224

原创 圆环工件毛刺(凸起)缺口(凹陷)检测案例

圆环工件毛刺(凸起)缺口(凹陷)检测案例 OpenCV C++

2022-07-26 18:51:04 1144

原创 用STL库创建线程

用STL库创建线程

2022-07-13 16:27:36 216

原创 使用OpenCV检测锯齿或阶梯状(缺口、残缺)特征

使用OpenCV检测锯齿或阶梯状(缺口、残缺)特征

2022-07-13 10:51:51 1519

原创 使用OpenCV+Zbar一维码(条形码)识别

使用OpenCV+Zbar一维码(条形码)识别

2022-07-08 16:37:22 1213

Windows C++访问SQL SERVER数据库项目实战案例

Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SERVER数据库项目实战案例。 VS2015工程。 实现 连接、读取、修改等数据库常用功能,封装完整。 实测可用!!! Windows C++访问SQL SER

2022-09-05

棋牌格标定板图片(张氏标定法)

可直接用于相机的内外参标定

2022-02-14

棋盘格标定板图像(可用于张氏标定法)

可以直接用于进行相机的内外参标定

2022-02-14

空空如也

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

TA关注的人

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