画像内で検出されたすべてのブロブの中心を取得しようとしているので、2 つの異なる方法で実行しようとしましたが、2 つの異なる結果が得られました!
最初のものは次のとおりです。
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);
}
2番目の方法は次のとおりです。
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")
ピクセルが黒ではないことを意味します (つまり、ブロブからのものです)。
しかし、なぜ異なる結果が得られるのか理解できません! 誰かが私を助けて、理由を教えてもらえますか?