C#图像处理之图像目标质心检测的方法

本文实例讲述了C#图像处理之图像目标质心检测的方法。分享给大家供大家参考。具体如下:

//采用二值化图像,图像中黑色表示背景,白色表示目标

//定义质心计算函数

private int[] CentPoints(Bitmap src)

{

//定义存储质心坐标的数组变量

int[] CentreP = new int[2];

int M00 = 0, M01 = 0, M10 = 0;

Rectangle rect = new Rectangle(0, 0, src.Width, src.Height);

System.Drawing.Imaging.BitmapData bmpData = src.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

unsafe

{

int stride = bmpData.Stride;

byte* p;

byte* pIn = (byte*)bmpData.Scan0.ToPointer();

int R, G, B;

for (int y = 0; y < src.Height; y++)

{

for (int x = 0; x < src.Width; x++)

{

p = pIn;

R = p[2];

G = p[1];

B = p[0];

if (R + G + B != 0)

{

M00++;

M01 += y;

M10 += x;

}

pIn += 3;

}

pIn += stride - src.Width * 3;

}

CentreP[0] = (int)(M10 / M00);

CentreP[1] = (int)(M01 / M00);

}

src.UnlockBits(bmpData);

return CentreP;

//返回一个数组,该数组中第一个元素是质心的X坐标,

//第二个元素是质心的Y坐标

}

希望本文所述对大家的C#程序设计有所帮助。

以上是 C#图像处理之图像目标质心检测的方法 的全部内容, 来源链接: utcz.com/z/337709.html

回到顶部