0
我試圖獲得圖像中所有檢測到的斑點的中心,所以我試圖用兩種不同的方式做到這一點,並且我得到了兩個不同的結果!
第一個是如下:計算中心使用aforge和manualy的許多blob
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")
意味着該像素不是黑色的(即,它是從一些blob)。
但我不明白爲什麼我得到不同的結果! 有人可以幫我,告訴我爲什麼嗎?
我想這是問題,我認爲更多的分裂意味着更多的結果之間的差異!對? – Ruba 2013-03-21 18:22:45