使用emgu cv CvInvoke.cvHoughCircles进行对象检测

时间:2011-06-10 12:28:34

标签: c# emgucv

我想在visual c#中使用cvHoughCircles方法检测对象。如果有人知道怎么做,请帮助我。

修改详情:

我在互联网上搜索了使用gray.HoughCircles方法的示例  这是我的代码。

 Image<Bgr, Byte> image = capture.QueryFrame();
 MCvScalar hsv_min = new MCvScalar(150, 84, 130, 0);
 MCvScalar hsv_max = new MCvScalar(358, 256, 255, 0);
 IntPtr hsv_frame = CvInvoke.cvCreateImage(new System.Drawing.Size(640,         480),IPL_DEPTH.IPL_DEPTH_8U, 3);
 IntPtr thresholded = CvInvoke.cvCreateImage(new System.Drawing.Size(640, 480), IPL_DEPTH.IPL_DEPTH_8U, 1);


 CvInvoke.cvCvtColor(image, hsv_frame, COLOR_CONVERSION.CV_BGR2HSV);
 CvInvoke.cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded);

 IntPtr storage = CvInvoke.cvCreateMemStorage(0);
  CvInvoke.cvSmooth(thresholded, thresholded, SMOOTH_TYPE.CV_GAUSSIAN, 9, 9, 0, 0);

IntPtr circles= CvInvoke.cvHoughCircles(thresholded,   storage,HOUGH_TYPE.CV_HOUGH_GRADIENT , 2, 4, 100, 50, 10, 400);   

在下面的链接中有代码。但它是在pythen.So我正在做的是尝试将其转换为visual c#。

http://www.lirtex.com/robotics/fast-object-tracking-robot-computer-vision/#comment-847

我想将所有检测到的圆圈放入for循环中,然后像在pythen代码中一样将圆圈绘制到相应的对象。

我尝试使用foreach循环但是有错误,

  

foreach语句不能对'System.IntPtr'类型的变量进行操作,因为'System.IntPtr'不包含'GetEnumerator'的公共定义。

是否有任何方法可以避免此错误。

1 个答案:

答案 0 :(得分:1)

您是否尝试过本教程? Shape (Triangle, Rectangle, Circle, Line) Detection in CSharp

这包含可能对您有帮助的好教程。