我正在尝试获取图像中所有检测到的斑点的中心,因此我尝试以两种不同的方式进行操作,得到了两种不同的结果!
第一个如下:
BlobCounter blobCounter = new BlobCounter();
blobCounter.ObjectsOrder = ObjectsOrder.Area;
blobCounter.ProcessImage(image);
Blob[] blobs = blobCounter.GetObjectsInformation();
AForge.Point Center = new AForge.Point();
if (blobs.Length > 0)
{
Center.X = blobs.Average(c => c.CenterOfGravity.X);
Center.Y = blobs.Average(c => c.CenterOfGravity.Y);
}
第二种方法如下:
System.Drawing.Point Center = new System.Drawing.Point();
int count = 0;
int sumX = 0;
int sumY = 0;
for(int i = 0 ;i<image.Width;i++)
for (int j = 0; j < image.Height; j++)
{
var p = image.GetPixel(i,j);
if (!p.Name.ToLower().Equals("ff000000"))
{
sumX += i;
sumY += j;
count++;
}
}
if (count > 0)
{
Center.X = sumX / count;
Center.Y = sumY / count;
}
return Center;
在哪里
!p.Name.ToLower().Equals("ff000000")
意味着像素不是黑色的(即它来自一些斑点)。
但是我不明白为什么我会得到不同的结果!有人可以帮助我并告诉我为什么吗?