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