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

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的相关学习资料提供也相当感谢。
  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. }

首先,简单搜了一下,我没找到 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],剩下的看你想干什么了