C#图像处理之图像目标质心检测的方法
程序员文章站
2022-05-26 15:18:21
本文实例讲述了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#中的正则表达式双引号问题