将EmguCV与C#,MS VS 2015结合使用。目标是识别白板上的黑色圆圈(带有灰尘)。圆周半径约为80像素,没有相邻的圆圈。
鉴于IntPtr ptrImg
包含带有灰度图像的byte[]
(每个样本8位,一个通道)。
有一个圆圈检测代码:
Mat mat = new Mat(height, width, DepthType.Cv8U, 1, ptrImg, width);
CvInvoke.FastNlMeansDenoising(mat, mat, 20);
return CvInvoke.HoughCircles(mat, HoughType.Gradient, 2.0, 120.0, 90, 60, 60, 100);
事实上,有些圆圈被检测到了,但是其他圆圈有一个小故障 - 检测到的半径与实际半径不同,大约5-7个像素;检测到的边界在一侧与实际边界重合,在另一侧重合。
我错了什么?也许,我必须玩dp,param1,param2?我和他们有什么关系?