欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-10-25 19:03:18
本文实例讲述了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#程序设计有所帮助。