首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【目标跟踪】奇葩需求如何处理(二)

一、前言 在工作中往往出现些奇葩需求。 上一篇介绍了一些奇葩需求奇葩需求如何处理(一) ,今天给大家分享一些更奇葩的需求。...(np.around(circles)) # 遍历检测到的每个圆 for i in circles[0, :]: # 在原图上绘制圆形轮廓和圆心...100); // 注意:这里是HOUGH_GRADIENT而不是HOUGH_GRADIENT // 遍历检测到的每个圆 for (size_t i = 0; i 图像 取一定区域进行操作 高斯滤波去噪 Canny 边缘检测 HoughCircles 霍夫曼圆找圆 画图 在找到圆中可以添加一些过滤条件,过滤一些误检的圆。...获得了凸包的像素点,直接输出像素点的世界坐标,最终得到的包络框输出给规控。 计算凸包可以利用 opencv 中 cv::convexHull 函数,输入所有点像素,得出凸包点像素。

10810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于Python利用OpenCV实现Hough变换的形状检测

    霍夫变换是一种特征提取方法,用于检测图像中的简单形状,如圆、线等。 “简单”特征是通过参数的形状表示推导出来的。...使用 OpenCV 检测直线 在OpenCV中,使用霍夫变换的线检测是在函数HoughLines和HoughLinesP(概率霍夫变换)中实现的。我们将重点讨论后者。...使用 OpenCV 检测圆 该过程与直线的过程大致相同,不同之处在于这次我们将使用 OpenCV 库中的不同函数。...我们现在将使用 HoughCircles,它接受以下参数: image: 8 位、单通道、灰度输入图像。 circles:找到的圆的输出向量。...例如,如果 dp=1 ,则累加器具有与输入图像相同的分辨率。如果 dp=2 ,累加器的宽度和高度是原来的一半。 minDist:检测到的圆的中心之间的最小距离。

    2.5K10

    OpenCV 图像分析之 —— 霍夫变换(Hough Transform)

    霍夫变换(Hough Transform)是一个关于图像领域类的一个算法,被用来检测图像中的各类曲线,直线,圆,椭圆等等,本文记录相关内容与 OpenCV 实现。...OpenCV中圆变换的实现通过采用一种称为Hough梯度法的较为复杂的方法来避免了这个问题。 理论方法 图像坐标空间中的一条已知的曲线方程也可以建立其相应的参数空间。...OpenCV中圆变换的实现通过采用一种称为Hough梯度法的较为复杂的方法来避免了这个问题。 在用霍夫变换检测圆的实现中使用两轮筛选。...一旦检测到可能的圆心(即收到预定数量的投票),就在第二轮筛选中建立半径值范围的一维直方图。这个直方图的尖峰就是被检测圆的半径 OpenCV 霍夫圆变换 Hough梯度法工作过程如下。...cv2.HoughCircles OpenCV 实现霍夫圆变换的函数 官方文档 函数使用 cv2.HoughCircles( image, # 单通道灰度图像,uint8 格式 method

    5K10

    【python opencv】霍夫变换

    封装在OpenCV函数**cv.HoughLines**()中。它只是返回一个:math:(rho,theta)值的数组。ρ以像素为单位,θ以弧度为单位。...第一个参数,输入图像应该是二进制图像,因此在应用霍夫变换之前,请应用阈值或使用Canny边缘检测。第二和第三参数分别是ρ和θ精度。第四个参数是阈值,这意味着应该将其视为行的最低投票。...请记住,票数取决于线上的点数。因此,它表示应检测到的最小线长。...)是圆的中心,rr是圆的半径。...从等式中,我们可以看到我们有3个参数,因此我们需要3D累加器进行霍夫变换,这将非常低效。因此,OpenCV使用更加技巧性的方法,即使用边缘的梯度信息的**Hough梯度方法**。

    1.2K20

    C++ OpenCV霍夫变换--圆检测

    霍夫圆变换 霍夫圆变换的基本思路是认为图像上每一个非零像素点都有可能是一个潜在的圆上的一点,跟霍夫线变换一样,也是通过投票,生成累积坐标平面,设置一个累积权重来定位圆。如下图: ? ?...相关的API介绍 cv::HoughCircles ? ?...代码演示 新建一个项目opencv-0018,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ? ?...可以看到用蓝色标的右边检测出两个圆来,但是最大的白色并没有检测出来 我们重新看一下霍夫的圆检测的函数 cv::HoughCircles(src, circles, CV_HOUGH_GRADIENT,1...可以看到这回检测出来白色的球了,但是上面的黑色圆因为是个侧面,所以出现了检测出两个圆来 说明还是参数的问题,我们再修改一下 cv::HoughCircles(src, circles, CV_HOUGH_GRADIENT

    2.7K30

    Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示

    Python+opencv 机器视觉 - 基于霍夫圈变换算法检测图像中的圆形实例演示 第一章:霍夫变换检测圆 ① 实例演示1 ② 实例演示2 ③ 霍夫变换函数解析 第二章:Python + opencv...: image 为灰度图像; method 使用的方法为霍夫梯度法,目前已知的有 HOUGH_GRADIENT 和 HOUGH_GRADIENT_ALT 两种,后者的准确率会更高一点; dp 为累加器分辨率与图片分辨率的反比...,值越小能检测出的圆越多,值越大的话就检测出来的少,但是检测出来的圆形相比于没检测出来的会更圆、更完美一些; minRadius 为最小半径; minRadius 为最大半径; 首先通过均值偏移滤波降噪来排除干扰的点...,method使用的方法为霍夫梯度法,minDist两个圆中心的最小距离 circles = cv.HoughCircles(gray_img, cv.HOUGH_GRADIENT, 1, 30, param1...,method使用的方法为霍夫梯度法,minDist两个圆中心的最小距离 circles = cv.HoughCircles(gray_img, cv.HOUGH_GRADIENT, 1, 30

    1.4K20

    OpenCV与图像处理(四)

    本章节的主要内容是霍夫变换,包括以下2个知识点: 1、直线检测 2、圆检测 以下代码均在python3.6,opencv4.2.0环境下试了跑一遍,可直接运行。...---- 1、霍夫变换介绍 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个參数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。...图像霍夫变换通过把图像的坐标从2D平面坐标系变换到极坐标空间,可以发现原来在平面坐标难以提取的几何特征信息(如:直线、圆等),图像的直线与圆检测就是典型的利用霍夫空间特性实现二值图像几何分析的例子。...---- 3、霍夫圆检测:cv2.HoughCircles() 假设平面坐标的任意一个圆上的点C,转换到极坐标中,在点C处有最大值,霍夫变换正是利用这个原理实现圆的检测。...基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步: (1)检测边缘,发现可能的圆心。 (2)基于第一步的基础上从候选圆心开始计算最佳半径大小。

    66520

    17: 霍夫变换

    学习使用霍夫变换识别出图像中的直线和圆。图片等可到文末引用处下载。...目标 理解霍夫变换的实现 分别使用霍夫线变换和圆变换检测图像中的直线和圆 OpenCV函数:cv2.HoughLines(), cv2.HoughLinesP(), cv2.HoughCircles()...教程 理解霍夫变换 霍夫变换常用来在图像中提取直线和圆等几何形状,我来做个简易的解释: 学过几何的都知道,直线可以分别用直角坐标系和极坐标系来表示: 那么经过某个点(x0,y0)的所有直线都可以用这个式子来表示...如果将某个点所有的(r,θ)绘制成下面的曲线,那么同一条直线上的点的(r,θ)曲线会相交于一点: OpenCV中首先计算(r,θ) 累加数,累加数超过一定值后就认为在同一直线上。...) # 画出圆心Copy to clipboardErrorCopied 小结 霍夫变换用来提取图像中的直线和圆等几何形状。

    88740

    HoughCircle找圆总结——opencv

    ;为了提高找圆精度,相比拟合法,需要提供更多的参数加以控制,参数要求比较严格,且总体稳定性不佳 OpenCV内的HoughCircles对基础的Hough变换找圆做了一定的优化来提高速度,它不再是在参数空间画出一个完整的圆来进行投票...不过在这种思想优化下,也存在致命的缺陷,如图2: 实际情况是该点算出的梯度方向其实总是有误差的,有时因为图像原因或结构原因,偏差甚至超过30度;图2中由于梯度方向不精确,7点基本没有获得投票...,默认排序下得分最高的几个圆如左图: 貌似默认最好的圆并没有任何改善 很多初次使用该函数的看到这,或许就就觉得HoughCircles效果不咋地。。。...;此处只需做个小小的优化,改下评价方法,优化下排序,结果就很接近了 这是经过优化排序方法后找出的最好的圆 找出来的圆中与实际轮廓重合度最高的圆一般就是我们要找的圆;因此我们可以通过HoughCircles...,建议采用该方法做粗定位,采用拟合圆做精定位(类似各商业算法中的环形区域找圆)

    1.4K31

    OpenCV消除高亮illuminationChange函数的使用

    OpenCV本身也有一个消除高亮的函数,今天这篇就是来了解一下消除高亮函数的使用,就结果来说,有效果,但不多。...01 获取图像区域替换背景 在我们上一篇的代码基础上,把获取圆的区域这块单独写了个函数出来,目的主要是检测到圆后,将圆的区域截取出后,因为要去高光,所以圆外对我们来说是无用区域,直接填充到黑色,这样就减少掩膜查找无用高光区域了...A 看到这里可能有人会提问,代码中threshold二值化找到的高光部分是不是直接可以当掩膜了,这个我开始也想直接这样的,省去了查找轮廓的部分,不过测试过程中直接报错了,也就是说去高光函数中掩膜区域里面只能是矩形...Mat rectroi = src(rect); //截取圆形区域 Mat circleroi = Mat::zeros(rectroi.size(), CV_8U); //绘制检测到的圆...vector circles; HoughCircles(gray, circles, HOUGH_GRADIENT, 1, 50, 100, 100); //绘制检测到的圆型

    1.6K10

    实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 代码)

    视觉/图像重磅干货,第一时间送达! 导 读 本文主要介绍基于OpenCV+OCR实现弧形文字识别实例,并给详细步骤和代码。 背景介绍 测试图如下,目标是正确识别图中的字符。...mod=viewthread&tid=6712 同样,论坛中已经给出了Halcon实现代码,实现效果如下: 这个例子与以前介绍的环形文字识别类似,具体可参考下面链接: 实战 | OpenCV...+OCR实现环形文字识别实例(详细步骤 + 代码) 二者的区别就在于一张包含完整的圆,另一张只有部分圆弧,下面给出详细实现步骤。...将扩充后的图像转为灰度图,然后滤波,使用霍夫变换检测圆,结果如下: gray = cv2.cvtColor(new_img,cv2.COLOR_BGR2GRAY) gray = cv2.medianBlur...以检测到的圆心和半径做极坐标变换。

    1.1K10

    计算机视觉 OpenCV Android | 基本特征检测之 霍夫圆检测

    这里的霍夫空间便是一个三维空间, 所以如果还是跟之前的累积计算一样,计算量就会大大增加, 这样显然不利于快速计算与检测, 所以在OpenCV中, 霍夫圆检测不是基于二值图像或者边缘检测的结果,...而是基于灰度图像的梯度来找到候选区域, 然后基于候选区域实现霍夫圆检测, 这样就会大大减少计算量,提高程序的执行速度与性能, 但是基于梯度实现霍夫圆检测也带来了另外一个问题,那就是结果特别容易受到噪声影响..., 对图像中的噪声特别敏感, 所以在OpenCV中使用相关API实现霍夫圆检测的时候, 首先需要通过模糊操作对图像进行噪声抑制处理。...一般来说,常见的均值、高斯、中值模糊对图像噪声的抑制已经比较有效, 但是在霍夫圆检测中有时候还会用到边缘保留滤波来抑制平坦区域噪声, 以便在进行梯度计算的时候能够更好地得到候选区域。...霍夫圆检测的API: HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1

    1.5K21

    Python opencv图像处理基础总结(六) 直线检测 圆检测 轮廓发现

    在标准霍夫圆变换中,原图像的边缘图像的任意点对应的经过这个点的所有可能圆在三维空间用圆心和半径这三个参数来表示,其对应一条三维空间的曲线。...,标准霍夫圆变化很难被应用到实际中。...OpenCV实现的是一个比标准霍夫圆变换更为灵活的检测方法——霍夫梯度法,该方法运算量相对于标准霍夫圆变换大大减少。...第二步是根据所有候选中心的边缘非0像素对其的支持程度来确定半径。注:模向量即是圆上点的切线的垂直线。...param2:圆心检测的累加阈值,参数值越小,可以检测越多的假圆圈,但返回的是与较大累加器值对应的圆圈 minRadius:检测到的圆的最小半径 maxRadius:检测到的圆的最大半径 import

    8.2K42

    OpenCV 4.3 来了!功能增加,性能加速,例程更丰富~

    CPU 优化的 IPP-ICV 库更新到2020.0.0 Gold版; 主模块的integral, resize 和opencv_contrib中的RLOF进行SIMD优化; 新增功能模块 1. opencv_contrib...Natural Image Matting,给定图像和与其对应的trimap,计算扣像结果。...2. imgproc 模块函数霍夫变换进行圆检测的HoughCircles() 新增了HOUGH_GRADIENT_ALT 实现,显著提高圆检测的召回率和精度,值得一试! ?...3. imgcodecs 模块新增了OpenJPEG 的初始支持,以往OpenCV中巨常用的I/O函数imread 和imwrite使用的是开源工程jasper,但该工程已经年久失修被曝出有多处安全漏洞...,且多年未更新了,OpenJPEG作为JPEG2000格式图片官方推荐软件,被引入OpenCV,是对数百万开发者和其后广大最终用户的负责; ?

    1.5K30

    【走进OpenCV】霍夫变换检测直线和圆

    本文主要借鉴Madcola发布在简书上的文章,转载请联系原作者,禁止二次转载。 我们如何在图像中快速识别出其中的圆和直线?一个非常有效的方法就是霍夫变换,它是图像中识别各种几何形状的基本算法之一。...霍夫线变换 霍夫线变换是一种在图像中寻找直线的方法。OpenCV中支持三种霍夫线变换,分别是标准霍夫线变换、多尺度霍夫线变换、累计概率霍夫线变换。...在OpenCV中可以调用函数HoughLines来调用标准霍夫线变换和多尺度霍夫线变换。HoughLinesP函数用于调用累积概率霍夫线变换。...* (a)); line(dstImage, pt1, pt2, Scalar(55, 100, 195), 1, LINE_AA); //Scalar函数用于调节线段颜色,就是你想检测到的线段显示的是什么颜色... circles; HoughCircles(midImage, circles, CV_HOUGH_GRADIENT, 1.5, 10, 200, 150, 0, 0); //注意第七的参数为阈值

    1.7K20
    领券