初学C#的OpenCVsharp,霍夫圆变换时圆心如何定义 300C

VectorOfVec3f circles = new VectorOfVec3f();

        //Mat element = new Mat(, Size(13, 13));
        //Cv2.ImShow("Demo", source);
        //element = new Mat();
        //element=
        Cv2.HoughCircles(tempImage, HoughMethods.Gradient, 1.5, 50, 100, 100, 0, 0);
        for (int i = 0; i < circles.Size; i++)
        {

Point center = new Point((int)Math.Round(circles()), (int)Math.Round(circles(i,0))); //定义圆心

int radius = (int)Math.Round(circles.radius);

                            加黑一段的代码不知道这么写才对,求大神解惑,或者有没有opencvsharp的相关学习资料提供也相当感谢。
0

2个回答

首先,简单搜了一下,我没找到 opencvsharp的文档,没有用过c#调用opencv的库,但是学习方面从性能和资料上考虑你最好还是用c++来写
如果你只会c语言也没关系,opencv上不会需要你会高级的用法,c++并不那么难学,而且后面用到qt也很方便

第二个,你用霍夫变换会返回给你圆心坐标,你写的形式很像python的用法,python的是直接返回圆心坐标的数组里面了。
看你写的函数是返回类型匹不匹配的问题,element就是你要的circles,具体用什么类型的变量,你看看你的编译器或者opencvsharp reference手册

所以这一段代码,element是nx3维数组,前两维即element[n][0],element[n][1]是圆心,另外一维element[n][2]是半径.
Point类型是2维数组,element[n][0],element[n][1]用cvRound后的值给Point类型的center [0],center[1],剩下的看你想干什么了

0
  1. CircleSegment[] circles = Cv2.HoughCircles(tempImage, HoughMethods.Gradient, 1.5, 50, 100, 100, 0, 0);
  2. for (int i = 0; i < circles.Length; i++)
  3. {
  4. //绘制圆心
  5. Cv2.Circle(dstImage, Convert.ToInt32(circles[i].Center.X), Convert.ToInt32(circles[i].Center.Y), 3, new Scalar(0, 255, 0), -1, LineTypes.Link8, 0);
  6. //绘制圆轮廓
  7. Cv2.Circle(dstImage, Convert.ToInt32(circles[i].Center.X), Convert.ToInt32(circles[i].Center.Y), Convert.ToInt32(circles[i].Radius), new Scalar(155, 50, 255), 3, LineTypes.Link8, 0);
  8. }
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
OpenCV——霍夫圆实现简单的圆检测
1.原理 圆周上任意三点所确定的圆,经Hough变换后在三维参数空间应对应一点。遍历圆周上所有点,任意三个点所确定的候选圆进行 投票。遍历结束后,得票数最高点(理论上圆周上任意三点确定的圆在Hough变换后均对应三维参数空间中的同一点)所确定的圆 即为该圆周上,绝大多数点所确定的圆(以下称为当选圆),即绝大多数点均在该当选圆的圆周上,以此确定该圆。 2.API介...
OpenCV霍夫变换系列(中篇)-霍夫圆变换
关于统计概率的霍夫线变换源码在下篇补上(我还没来得及去看),这次直接按照流程把霍夫圆变换撸一遍。
图像处理之霍夫变换圆检测算法
演示应用Hough变换检测图像中得圆,得到检测目标,详解讲述了这一算法过程 并且展示了算法运行的效果. 讨论了hough变换检测的先决条件.
基于opencv的圆检测
基于opencv对采集的图片检测圆,并且将圆上的各点采样,取1024个点,得到这1024个点的灰度值.为后续的FRF变换提供数据.其中灰度的大小代表了此处润滑液的厚度深浅.对工程分析应用非常有帮助.-
霍夫变换检测圆形原理分析
上一篇博客中简要描述了一下自己对霍夫变换检测直线的原理理解,现在说一下检测圆形的原理。 其实检测圆形和检测直线的原理差别不大,只不过直线是在二维空间,因为y=kx+b,只有k和b两个自由度。而圆形的一般性方程表示为(x-a)²+(y-b)²=r²。那么就有三个自由度圆心坐标a,b,和半径r。这就意味着需要更多的计算量,而OpenCV中提供的cvHoughCircle()函数里面可以设定半
霍夫变换提取圆心坐标,并拟合直线
霍夫变换提取圆心坐标,并拟合直线
OpenCv使用摄像头进行霍夫圆变换识别圆形并返回圆心坐标
效果图: 代码的实现如下(底下有参数的解释): #include "stdafx.h" //---------------------------------【头文件、命名空间包含部分】---------------------------- // 描述:包含程序所使用的头文件和命名空间 //--------------------------------------------
OpenCV学习笔记-霍夫圆变换
霍夫圆变换的函数为:HoughCircles利用 Hough 变换在灰度图像中找圆CvSeq* cvHoughCircles( CvArr* image, void* circle_storage, int method, doubl
【opencv练习24 - 霍夫圆变换——圆检测】
/***************************************************** 测试程序 【HoughCircle_Demo 霍夫圆变换——边缘检测】 时间:2016年8月30日 参数:src,输出数组,霍夫梯度,dp,最小圆心距,Canny阈值,累加阈值 HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, sr
霍夫圆变换、霍夫直线变换算法实现
霍夫直线变换,利用梯度方向加快计算速度. 参考资料: http://en.wikipedia.org/wiki/Hough_transform
OpenCV霍夫圆检测
OpenCV霍夫圆检测,检测出图像中的圆,输出圆的半径和圆心信息,并根据半径的大小进行筛选(VS2010+OpenCv2.4.7)
OpenCV学习19--霍夫变换检测圆
原理: 霍夫变换圆检测原理和直线相似,直线检测需要两个参数(theta,r)。圆形需要圆心做坐标两个参数和半径。 对左边做霍夫圆变换可以发现圆形的位置变成了一个两点,说明 HoughCircles( image, outputArray circles, 发现圆信息 int method, 方法-HOUGH_GRADIENT dou...
openCV入门----霍夫变换检测圆
     前面几次的内容,包括基础知识介绍和综合训练,基本上都是围绕着霍夫变换检测直线来进行展开的。那么这次我要来探讨霍夫变换检测圆。话不多说,首先我们来简要地看看霍夫变换检测圆是什么原理。 霍夫变换检测圆的原理及其实现     前面的学习,让我对霍夫变换有了这样一种理解-----实际上就是坐标变换,是一种数学上的变换,然后再转换到参数坐标系进行讨论,最终确定待检测圆(或者其他形状)的数学...
【opencv学习笔记】022之霍夫圆变换
1.原理介绍opencv中实现霍夫圆变换原理其实很简单的,初中生都会的,所以大家不要担心了啦,看下面这张图片,你看到了啥?对,没错,就是两根直线,四个圆,四个点,四个点分别是四个圆的圆心。并且四个圆大小是一样的(看着一样哈,大家就当一样吧,别用尺规作图去验证了)大家根据自己的理解去找对应关系啊!虽然本人学数学,但是美术不行啊!!!三个绿点点,对对对就是那三个,都是中间圆的圆上的一点,这样外面三个...
c#图像处理-利用霍夫检测得到未知圆坐标半径
public Bitmap circle(Bitmap img) { int[, ,] A = new int[img.Width, img.Height, 100]; for (int x = 0; x < img.Width; x++) { for (int y =
opencv笔记二十二(霍夫变换检测圆)HoughCircles
核心步骤:中值滤波去噪声 hough圆检测原理: https://blog.csdn.net/zhazhiqiang/article/details/51097439 因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤 波。    基于效率考虑,Opencv中实现的霍夫变换圆检测是基于图像梯度的实现,分为两步:1. 检测边缘,发现可能的圆心  2. 基于第一步的基础上从候选圆...
霍夫圆变换(Hough)原理
霍夫圆变换是将二维图像空间中一个圆转换为该圆半径、圆心横纵坐标所确定的三维参数空间中一个点的过程,因此,圆周上任意三点所确定的圓,经Hough变换后在 三维参数空间应对应一点。该过程类似于选举投票过程,圆周上任意三个点为一选举人,而这三个点所确定的圆则为一侯选人(以下称为候选圆〉。遍历圆周上所有点,任意三个点所确定的候选圆进行投票。遍历结束后,得票数最高点(理论上圆周上任意三点确定的圆在Hough
OpenCV霍夫圆检测原理
Here I’ll tell you how to detect circles (which are quite important in computer vision application) using a technique similar to the standard Hough transform. This article assumes you know how the Hou
利用OpenCV霍夫变换检测出圆
利用OpenCV进行霍夫变换检测出圆形,并提取圆心坐标和半径。 程序很简单,看看就懂了。 #include using namespace cv; using namespace std; const int kvalue = 15;//双边滤波邻域大小 int main() { Mat src_color = imread("1.png");//读取原彩色图 imshow("原
HoughCircles()函数 画圆心和圆的轮廓
代码如下: #include &amp;lt;opencv2/opencv.hpp&amp;gt; #include &amp;lt;opencv2/imgproc/imgproc.hpp&amp;gt; using namespace cv; using namespace std; int main( ) { //【1】载入原始图、Mat变量定义 Mat srcImage = imread(&quot;C://1.bmp&quot;)...
OpenCv--霍夫圆检测
霍夫圆变换 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/dcrmg/article/details/52506538 解释: 霍夫圆变换的基本思路是认为图像上每一个非零像素点都有可能是一个潜在的圆上的一点,跟霍夫线变换一样,也是通过投票,生成累积坐标平面,设置一个累积权重来定位圆。   在笛卡尔坐标系中圆的方程为:     其...
霍夫线/圆变换从原理到源码详解
1 简述 2 标准霍夫线变换原理 2.1 霍夫变换直线的方程 2.2 霍夫空间 2.3 检测直线的方法 2.4 一个例子 3 标准霍夫线变换的算法流程 OpenCV中的函数 1 简述   霍夫变换是一个经典的特征提取技术,本文主要说的是霍夫线/圆变换,即从图像中获取直线与圆,同时需要对图像进行二值化操作,效果如下。   霍夫变换目的通过投票程序在特定类型的形状内找到对...
获取多个圆的圆心
原始图片:                                                    图A                                                          图B两种方法:第一种方法:扫描整个图像,对于每个圆形区域,最先扫描到的点应为其顶点A,如图1所示,获取顶点A和底部点B的坐标,AB的中点即为圆心坐标。同时将该圆形区域的灰度值置为其他值,这样在扫描下一行时就不会在扫描到该圆。                           
opencv 简单的实现霍夫变换(改进版)
//霍夫变换 输入单通道二值图像 检测直线数量 void HoughLines(Mat &amp;amp;img,int n) { int i,j; //行列 int row = img.rows; int col = img.cols; //极径最大值为 对角线+宽 int max_r = col + cvCeil (sqrt(double(row*row+col*col))); /...
【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本篇文章中,我们一起探讨了OpenCV中霍夫变换相关的知识点,以及了解了OpenCV中实现霍夫线变换的HoughLines、HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles函数的使用方法。此博文一共有四个配套的简短的示例程序,其详细注释过的代码都在文中贴出,且文章最后提供了综合示例程序的下载。 先尝鲜一下其中一个示例程序的运行截图:
opencv:利用滑动条改变参数的霍夫圆检测
在学习opencv的过程中,发现用霍夫圆变换去检测圆的效果并不理想,对不同的图像,需要设置不同的参数,才能得到较好的效果。于是我就想到了利用滑动条来改变参数,这样对不同的图片,只需通过改变滑动条,都可以检测出拟合度较好的圆。     以下为代码: #include #include using namespace cv; using namespace std; Mat srcIma
C# EMGU 3.4.1学习笔记(八)示例程序:霍夫圆变换HoughCircles函数
霍夫圆变换的基本思路是认为图像上每一个非零像素点都有可能是一个潜在的圆上的一点,跟霍夫线变换一样,也是通过投票,生成累积坐标平面,设置一个累积权重来定位圆。 在笛卡尔坐标系中圆的方程为: 其中(a,b)是圆心,r是半径,也可以表述为: 即: 所以在abr组成的三维坐标系中,一个点可以唯一确定一个圆。 而在笛卡尔的xy坐标系中经过某一点的所有圆映射到abr坐标系中就是一条三维...
霍夫变换圆形检测(基于OpenCV&Python)
简述基于python使用opencv实现在一张图片中检测出圆形,并且根据坐标和半径标记出圆。不涉及理论,只讲应用。相关函数函数说明: Python: cv2.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) → circles 参数说明: ima
霍夫变换圆检测算法
地址:http://blog.csdn.net/jia20003/article/details/17252807
霍夫圆 定位不准确的问题 粗定位
对虹膜进行Canny边缘检测后,然后把得到的图像进行霍夫圆检测,就发现了这样的问题!定位不精确,然后我还没有解决,先写下这个问题,日后解决! 如下图: 这里定位了很多的圆! 有时候把原图像输入后,霍夫圆根本检测不出来有圆…很尴尬啊! ...
霍夫变换的圆检测原理
Hough 变换的原理 Hough 变换的原理就是利用图像全局特征将边缘像素连接起来组成区域封闭边界,它将图像空间转换到参数空间,在参数空间对点进行描述,达到检测图像边缘的目的。该方法把所有可能落在边缘上的点进行统计计算,根据对数据的统计结果确定属于边缘的程度。Hough 变换的实质就是对图像进行坐标变换,把平面坐标变换为参数坐标,使变换的结果更易识别和检测。 对经典的Hough 变换
OpenCV学习笔记-霍夫变换圆检测
霍夫圆变换的基本原理和霍夫线变换类似,只是点对应的二维极径极角空间被三维的圆心点x, y还有半径r空间取代。对直线来说,一条直线能由参数极径极角(r, θ)表示。而对圆来说,我们需要三个参数来表示一个圆,由于比直线检测多出一个维度,使得标准的霍夫圆检测需要大量的内存且速度比较慢。出于对运算效率的考虑,OpenCV实现的霍夫圆检测是一个比标准霍夫圆检测更为灵活的检测方法:霍夫梯度法,也叫2-1霍夫变...
OpenCv霍夫变换检测圆形
最近开始学习opencv,想检测图片上的圆环,发现霍夫变换可以做这样的效果出来,于是尝试用opencv3的霍夫变换做了下圆环检测。opencv中霍夫变换函数:void HoughCircles(InputArray image,OutputArray circles, int method, double dp, double minDist, double param1=100,double p...
OpenCV霍夫梯度找圆算法
OpenCV使用霍夫梯度算法检测图像中的圆。 算法步骤如下 用Canny算法进行边缘检测,得到一副边缘的二值图用Sobel算子计算图像的梯度图遍历边缘图中的非0点,沿着梯度方向和反方向求线段(梯度方向为圆弧的法线方向,即半径方向),线段的起点和长度由允许的半径区间决定。对线段经过的点在累加器中记数对累计器中的可能圆心按计数值从大到小排序,求半径
opencv轮廓检测之椭圆检测-----算法篇(7)--Hough transform检测圆
关于霍夫变换,  首先看看wiki的介绍     https://en.wikipedia.org/wiki/Hough_transform     http://www.iro.umontreal.ca/~mignotte/IFT6150/ComplementCours/HoughTransform.pdf     霍夫变换检测     用霍夫变换检测圆, 有 以下几种情况 1.圆
Hough变换与广义霍夫变换
霍夫变换检测直线原理: (x,y)坐标空间的直线,等价于(m,b)坐标空间的一点,等价于(r,θ)坐标空间的一点;(x,y)坐标空间的一点,等价于(m,b)坐标空间的一条直线,等价于(r,θ)坐标空间的一条正弦线注: 转换为r-θ坐标空间,是因为b-m空间在检测垂直线条m-&amp;gt;∞和参数的非线性离散化时会遇到困难。霍夫变换检测圆原理(x-a)^2 + (y-b)^2 = r^2 (a-x)^2...
OpenCV图像处理教程C++(十六)霍夫变换--线性变换以及圆变换
霍夫变换是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合特特定形状的集合作为霍夫变换的结果。 前提条件—边缘检测已经完成 霍夫线变换的直接输入只能是边缘二值图像 平面空间到极坐标空间转换 opencv支持三种不同非霍夫变换,标准,多尺度,累计概率 标准霍夫变换(StandardHough Transform,SHT),由HoughLines函...
利用霍夫梯度法进行圆检测的原理概要及OpenCV代码实现
霍夫圆变换的基本原理与霍夫线变换原理类似,对直线检测而言,一条直线可由极坐标参数r和θ确定,对于圆来说,则需要三个参数来确定一个圆(为什么是三个,圆心坐标需要两上参数,还要加上一个半径)。标准霍夫圆变换还是将直角坐标转换到描述圆的三维度空间中,然后使用这三个维度进行累加度量(投票),根据投票的结果判断是否为圆。要理解这段话,请先看我的博文:利用霍夫变换做直线检测的原理及OpenCV代码实现 图像...
Hough Transform(霍夫变换)检测Circle(圆)的几种方法
使用霍夫变换检测图像中的直线,圆等图形是利用图形函数的从直角坐标系到极坐标系的转换。 比如检测直线中,直线方程y = k * x + b  ,   直线上的所有点都对应着参数( k , b), 给定一个点(x0 , y0)我们能够得到通过这个点的所有直线的参数(k , b),易知同一条直线上的点对应的参数(k , b)是相同的 利用此信息,我们建立k , b 的累加器,依次计算图像中提取出的
关于霍夫找圆算法cvHoughCircles的
http://b217dgy.blog.51cto.com/5704306/1320360 霍夫圆变换的函数为: HoughCircles 利用 Hough 变换在灰度图像中找圆 CvSeq* cvHoughCircles( CvArr* image, void* circle_storage, int method, double dp
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据初学 云计算初学