
opencv 进阶
文章平均质量分 93
小海聊智造
专注于设计和构建可扩展、高性能和可靠的软件系统。我拥有十年以上的行业经验,涵盖多个领域,包括企业级应用、云计算,AI智能 和大数据处理。
热衷于解决复杂的技术挑战,并通过创新的架构设计提供可持续的解决方案。我具备深厚的技术功底,熟悉多种编程语言和技术栈,如Java、Python、go等, 熟悉微服务架构和分布式系统设计。我善于分析业务需求和技术要求,提供可行的技术方案,并在团队中推动其实施和落地。
展开
-
opencv 进阶20-随机森林示例
OpenCV中的随机森林是一种强大的机器学习算法,旨在解决分类和回归问题。随机森林使用多个决策树来进行预测,每个决策树都是由随机选择的样本和特征组成的。在分类问题中,随机森林通过投票来确定最终的类别;在回归问题中,随机森林通过平均所有决策树的预测结果来获得最终预测值。随机森林是一种监督学习算法,它构建的“森林”是决策树的集合,。随机森林首先使用训练出来的分类器集合对新样本进行分类,然后用多数投票或者对输出求均值的方法统计所有决策树的结果。原创 2023-08-24 14:17:06 · 1822 阅读 · 0 评论 -
opencv进阶19-基于opencv 决策树cv::ml::DTrees 实现demo示例
样本缺少某些特征的值,那么该样本就无法继续沿着树向下切分,也就无法到达叶子节点,即没有预测输出。在这种情况下,可以利用当前节点下面的所有子节点中的叶子节点来预测输出的平均值,作为这个样本的预测输出,故称之为代理切分。罕见的异常,即在训练集中正常比异常多很多,此时只需将每个案例都视为正常,即可实现非常好的分类性能。为了避免这种情况,可以指定先验,人为地增加异常概率(高达0.5,甚至更高),因此错误分类的异常权重变得更大,这样决策树就能做出适当地调整,以更好地检测异常样本。如果是,则向左移动,否则向右移动。原创 2023-08-23 13:30:18 · 1961 阅读 · 1 评论 -
opencv进阶18-基于opencv 决策树导论
决策树是最早的机器学习算法之一,起源于对人类某些决策过程 的模仿,属于监督学习算法。决策树的优点是易于理解,有些决策树既可以做分类,也可以做回归。在排名前十的数据挖掘算法中有两种是决策树[1]。决策树有许多不同版本,典型版本是最早出现的ID3算法,以及对其改进后形成的C4.5算法,这两种算法可用于分类。对ID3算法改进的另一个分支为“分类和回归树”(Classification AndRegression Trees,CART)算法,可用于分类或回归。原创 2023-08-23 10:40:44 · 838 阅读 · 0 评论 -
opencv 进阶17-使用K最近邻和比率检验过滤匹配(图像匹配)
然后,根据第二次观察,即使其中一位哲学家的观点是正确的,你也会开始担心可能会选择一个观点错误的哲学家。因此,蛮力匹配器计算每个可能匹配的距离分值,可以提供大量的对糟糕匹配的距离分值的观察。与无数糟糕的匹配相比,我期望良好的匹配会有明显更好(更低)的距离分值,因此糟糕的匹配分值可以帮助我们为针对良好的匹配选择一个阈值。假设一个查询关键点最多有一个正确或者良好的匹配,那么在考虑所有可能的匹配时,我们主要观察糟糕的匹配。这样的实现丢弃了有关所有可能的糟糕匹配的距离分值的信息,而这类信息是自适应方法所需要的。原创 2023-08-22 15:07:27 · 2623 阅读 · 0 评论 -
opencv 进阶16-基于FAST特征和BRIEF描述符的ORB(图像匹配)
在计算机视觉领域,从图像中提取和匹配特征的能力对于对象识别、图像拼接和相机定位等任务至关重要。实现这一目标的一种流行方法是ORB(Oriented FAST and Rotated Brief)特征检测器和描述符。ORB 由 Ethan Rublee等人开发,结合了两种现有技术的优势——FAST(加速分段测试特征)和Brief(二进制鲁棒独立基本特征)——为特征提取和匹配提供了强大而高效的解决方案。原创 2023-08-22 14:11:23 · 1963 阅读 · 0 评论 -
opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()
前面我们已经了解了Harris函数来进行角点检测,因为角点的特性,这些角点在图像旋转的时候也可以被检测到。但是,如果我们放大或缩小图像时,就可能会丢失图像的某些部分,甚至有可能增加角点的质量。这种损失的现象需要一种与图像比例无关的角点检测方法来解决。SIFT(Scale-Invariant Feature Transform)尺度不变特征变换可以解决这个问题。函数说明:nfeatures: 保留的最佳功能的数量。这些特征按其分数排名(在SIFT算法中作为局部对比度测量)。原创 2023-08-22 09:28:20 · 2040 阅读 · 0 评论 -
opencv进阶14-Harris角点检测-cv2.cornerHarris
为什么图像的某个特定区域可以归类为特征,而其他区域则不能分类为特征呢?广义地说,原创 2023-08-21 14:01:49 · 1806 阅读 · 0 评论 -
opencv 进阶13-Fisherfaces 人脸识别-函数cv2.face.FisherFaceRecognizer_create()
OpenCV 中,通过函数 cv2.face.FisherFaceRecognizer_create()生成 Fisherfaces 识别器实例模型,然后应用 cv2.face_FaceRecognizer.train()函数完成训练,用 cv2.face_FaceRecognizer.predict()函数完成人脸识别。原创 2023-08-21 10:21:21 · 1238 阅读 · 0 评论 -
opencv进阶12-EigenFaces 人脸识别
OpenCV 通过函数 cv2.face.EigenFaceRecognizer_create()生成特征脸识别器实例模型,然后应用cv2.face_FaceRecognizer.train()函数完成训练,最后用 cv2.face_FaceRecognizer.predict()函数完成人脸识别。原创 2023-08-21 09:49:51 · 1076 阅读 · 0 评论 -
opencv进阶11-LBPH 人脸识别(人脸对比)
在 OpenCV 中,可以用函数 cv2.face.LBPHFaceRecognizer_create()生成 LBPH 识别器实例模型,然后应用cv2.face_FaceRecognizer.train() 函数完成训练,最后用函数完成人脸识别。下面分别介绍上述三个函数。函数cv2.face.LBPHFaceRecognizer_create()函数 cv2.face.LBPHFaceRecognizer_create()的语法格式为:radius:半径值,默认值为 1。原创 2023-08-21 09:09:23 · 3582 阅读 · 0 评论 -
opencv 进阶10-人脸识别原理说明及示例-cv2.CascadeClassifier.detectMultiScale()
在 OpenCV 中,人脸检测使用的是 cv2.CascadeClassifier.detectMultiScale()函数,它可以检测出图片中所有的人脸。该函数由分类器对象调用,其语法格式为:image:待检测图像,通常为灰度图像。scaleFactor:表示在前后两次相继的扫描中,搜索窗口的缩放比例。minNeighbors:表示构成检测目标的相邻矩形的最小个数。默认情况下,该值为 3,意味着有 3 个以上的检测标记存在时,才认为人脸存在。原创 2023-08-18 11:20:58 · 7635 阅读 · 0 评论 -
opencv进阶08-K 均值聚类cv2.kmeans()介绍及示例
K均值聚类是一种常用的无监督学习算法,用于将一组数据点分成不同的簇(clusters),以便数据点在同一簇内更相似,而不同簇之间差异较大。K均值聚类的目标是通过最小化数据点与所属簇中心之间的距离来形成簇。当我们要预测的是一个离散值时,做的工作就是“分类”。例如,要预测一个孩子能否成为优秀的运动员,其实就是要将他分到“好苗子”(能成为优秀的运动员)或“普通孩子”(不能成为优秀运动员)的类别。当我们要预测的是一个连续值时,做的工作就是“回归”。原创 2023-08-17 11:38:54 · 1348 阅读 · 0 评论 -
opencv进阶07-支持向量机cv2.ml.SVM_create()简介及示例
在使用支持向量机模块时,需要先使用函数 cv2.ml.SVM_create()生成用于后续训练的空分类器模型。该函数的语法格式为:获取了空分类器 svm 后,针对该模型使用 svm.train()函数对训练数据进行训练,其语法格式为:训练结果= svm.train(训练数据,训练数据排列格式,训练数据的标签)训练数据:表示原始数据,用来训练分类器。例如,前面讲的招聘的例子中,员工的笔试成绩、面试成绩都是原始的训练数据,可以用来训练支持向量机。训练数据排列格式:原始数据的排列形式。原创 2023-08-17 10:21:19 · 1402 阅读 · 0 评论 -
opencv进阶06-基于K邻近算法识别手写数字示例
这里测试的图片是mnist 数据集中的,这个数据集下载的是压缩的,如要验证需要从下面的图片中去截图单独保存下来自己验证。本例中有两组位于不同位置的用于训练的数据集,如图 20-14 所示。在 OpenCV 中,不需要自己编写复杂的函数实现 K 近邻算法,直接调用其自带的模块函数即可。上述两组数据中,位于左下角的一组数据,其 x、y 坐标值都在(0, 30)范围内。从图中可以看出,随机点(星号点)距离右侧小方块(类型为 1)的点更近,因此被判定为属于小方块的类型 1。连续改了几个,发现识别准备度还是很低的。原创 2023-08-16 18:21:57 · 447 阅读 · 0 评论 -
opencv-进阶05 手写数字识别原理及示例
在本例中,0~9 的每个数字都有 10 个特征值。例如,数字“0”的特征值如图 20-12 所示。为了便于描述,将所有这些用于判断分类的图像称为特征图像。下面分步骤实现手写数字的识别。1. 数据初始化对程序中要用到的数据进行初始化。涉及的数据主要有路径信息、图像大小、特征值数量、用来存储所有特征值的数据等。特征图像存储在当前路径的“image_number”文件夹下。用于判断分类的特征值有 100 个(对应 100 幅特征图像)。特征图像的行数(高度)、列数(宽度)可以通过程序读取。原创 2023-08-16 13:37:17 · 4781 阅读 · 2 评论 -
opencv 进阶04-搞懂什么是 K邻近算法
机器学习算法是从数据中产生模型,也就是进行学习的算法(下文也简称为算法)。我们把经验提供给算法,它就能够根据经验数据产生模型。在面对新的情况时,模型就会为我们提供判断(预测)结果。例如,我们根据“个子高、腿长、体重轻”判断一个孩子是个运动员的好苗子。把这些数据量化后交给计算机,它就会据此产生模型,在面对新情况时(判断另一个孩子能不能成为运动员),模型就会给出相应的判断。原创 2023-08-15 16:24:51 · 168 阅读 · 0 评论 -
opencv进阶03-图像与鼠标的交互示例
在处理图像时,可能需要与当前正在处理的图像进行交互。OpenCV提供了鼠标事件,使用户可以通过鼠标与图像交互。鼠标事件能够识别常用的鼠标操作,例如:针对不同按键的单击、双击,鼠标的滑动、拖曳等。例如,用户单击鼠标,我们就画一个圆。通常的做法是,创建一个 OnMouseAction()响应函数,将要实现的操作写在该响应函数内。响应函数是按照固定的格式创建的,其格式为:定义响应函数以后,要将该函数与一个特定的窗口建立联系(绑定),让该窗口内的鼠标触发事件时,能够找到该响应函数并执行。原创 2023-08-15 13:36:18 · 855 阅读 · 0 评论 -
opencv进阶02-在图像上绘制多种几何图形
OpenCV 提供了方便的绘图功能,使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形,还能在图像中的指定位置添加文字说明。OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的函数cv2.ellipse()、绘制多边形的函数 cv2.polylines()、在图像内添加文字的函数 cv2.putText()等多种绘图函数。这些绘图函数有一些共有的参数,主要用于设置源图像、颜色、线条属性等。原创 2023-08-15 11:15:05 · 1605 阅读 · 0 评论 -
opencv进阶01-直方图的应用及示例cv2.calcHist()
但是,实际上人眼并不能明显感受到像素值的细微差别,所以我们可以将相近的像素值看成同一个像素值,这样就会得到类似于图 13-29 的直方图。如果一幅图像拥有全部可能的灰度级,并且像素值的灰度均匀分布,那么这幅图像就具有高对比度和多变的灰度色调,灰度级丰富且覆盖范围较大。对比图 13-4 与图 13-5,可以看到,归一化直方图与直方图在外观上是一致的,只是 y 轴的标签不同而已。在实际处理中,图像直方图的 x 轴区间一般是[0, 255],对应的是 8 位位图的 256 个灰度级;原创 2023-08-11 18:02:19 · 3192 阅读 · 0 评论