随笔分类 - OpenCV案例源码解读
略有更改,不求参数齐全,但求实用
摘要:letter_recog.cpp的整体认识查阅RTrees、Boost、ANN_MLP、KNearest、NormalBayesClassifier、SVM,大写英文字母识别,三目运算符的妙用(OpenCV案例源码letter_recog.cpp解读) letter-recognition.data
阅读全文
摘要:机器学习中,需要总样本集,拆分成训练集、测试集,计算训练、测试、整体的准确率。 OpenCV在ml.hpp中为我们准备了特有格式TrainData,它会把标签、特征集融合到其中,方便操作。 针对TrainData类型,提供了非常完美的函数,具体介绍如下: 1、拆分TrainData类型总样本集,注意
阅读全文
摘要:letter_recog.cpp是ml.hpp的最佳案例,可以解读出样本集、机器学习的内容,所以写了两篇博客。 ml.hpp的整体理解,请拜读大神的文章,多读几遍。 【样本集】 1、文件的读取、保存,推荐用load()、save(),而不是read()、write()。 2、样本集有data(特征集
阅读全文
摘要:AKAZE是KAZE的加速版,sift,surf等特征都是通过高斯核进行线性尺度空间进行特征检测的,相同尺度下每个点的变换是一样的,由于高斯函数是低通滤波函数,会平滑图像边缘,以至图像损失掉许多细节信息。针对这一问题,作者提出了一种基于非线性尺度空间的特征点检测方法,该非线性尺度空间保证了图像边缘在
阅读全文
摘要:AGAST特征点,算法速度比FAST和FASTER更快。 【函数】 Ptr<AgastFeatureDetector> create( int threshold=10, bool nonmaxSuppression=true, int type=AgastFeatureDetector::OAST
阅读全文
摘要:FAST,2006年提出并在2010年稍作修改后发表,若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。 【函数】 Ptr<FastFeatureDetector> create( int threshold=10,bool nonmaxSuppression=true,int ty
阅读全文
摘要:MSER(Maximally Stable Extremal Regions)最大稳定极值区域,2002提出,基于分水岭的思想来做图像中斑点的检测。 使用一系列灰度阈值对图像进行二值化处理,得到相应的黑色区域与白色区域。在比较宽的灰度阈值范围内保持形状稳定的区域称为稳定区域。 【函数】 Ptr<MS
阅读全文
摘要:ORB(Oriented FAST and Rotated BRIEF),2011年提出,是一种快速特征点提取和描述的算法。ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化(ORB主要解决了BRIEF描述子不具备旋转不变性的问题)。据说,ORB
阅读全文
摘要:2011年提出,是一种二进制的特征描述算子。速度比较:SIFT<SURF<BRISK<FREAK<ORB,在对有较大模糊的图像配准时,BRISK算法在其中表现最为出色。 【函数】 Ptr<BRISK> create(int thresh=30, int octaves=3, float patter
阅读全文
摘要:哈里斯(Harris)角点会出现聚簇现象(cornerHarris函数),为避免此现象,提出shi_tomasi角点检测算法goodFeatureToTrack,GFTTDetector实现了此算法。 【函数】 Ptr<GFTTDetector> create( int maxCorners=100
阅读全文
摘要:1、BRISK,2011年提出,是一种二进制的特征描述算子。速度比较:SIFT<SURF<BRISK<FREAK<ORB,在对有较大模糊的图像配准时,BRISK算法在其中表现最为出色。 2、ORB(Oriented FAST and Rotated BRIEF),2011年提出,是一种快速特征点提取
阅读全文
摘要:Blob是指图像中的一块连通区域,Blob分析就是对前景/背景分离后的二值图像,进行连通域提取和标记。 知识点就是SimpleBlobDetector的使用,blob(斑点)筛选条件:斑点颜色、面积、圆度、惯性率、凸度,参数解读链接 #include<opencv2/opencv.hpp> #inc
阅读全文
摘要:知识点是查找轮廓findContours()和绘制轮廓drawContours(),具体查阅我的博客多轮廓提取
阅读全文
摘要:官方源代码中有一点瑕疵,高斯分布产生的随机点points的坐标可能出现负数或大于500的数。如横坐标均值是0,方差是25,那么横坐标随机值中会出现负数。 修改了两处:随机数生成种子是时间、随机点points坐标保证在500*500以内。 【知识点1】聚类函数 double kmeans( Input
阅读全文
摘要:此案例用于二分类问题(鼠标左键、右键点出两类点,会实时画出分界线),最终得到一条分界线(直线):f(x)=weights*x+shift 源码不再贴出,只讲解最核心的doTrain()里的内容。参数含义翻译自ml.hpp文件。 与SVM不同,SVMSGD不需要设置核函数。 【参数】默认值见下述代码
阅读全文
摘要:有所更改,参数不求完备,但求实用。源码参考D:\source\opencv-3.4.9\samples\cpp\train_HOG.cpp,OpenCV3.4.9版本,内容与低版本略有不同。 【功能】HOG特征适合外形相似的目标识别。如图片中识别行人。 【知识点1】 方向梯度直方图(Histogra
阅读全文
摘要:有所更改,参数不求完备,但求实用。源码参考D:\source\opencv-3.4.9\samples\cpp\connected_components.cpp 【二值图认知纠正】 OpenCV中threshold()得到的二值图其实是0、255(设定值)这两个值的图,而不是0、1的图。 0、1图是
阅读全文
摘要:有所更改,参数不求完备,但求实用。源码参考D:\source\opencv-3.4.9\samples\cpp\cloning_demo.cpp 图片下载地址 https://github.com/opencv/opencv_extra 此案例图片具体位置 opencv_extra-master\t
阅读全文
摘要:有所更改,参数不求完备,但求实用。源码参考D:\source\opencv-3.4.9\samples\cpp\edge.cpp #include<opencv2\opencv.hpp> #include<iostream> using namespace cv; using namespace s
阅读全文
摘要:有所更改,参数不求完备,但求实用。源码参考D:\source\opencv-3.4.9\samples\cpp\drawing.cpp #include<opencv2\opencv.hpp> #include<iostream> using namespace cv; using namespac
阅读全文