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#程序设计有所帮助。

(0)

相关推荐

  • c#根据文件类型获取相关类型图标的方法代码

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Text; namespace WindowsFormsApplication1{    using System;    using System.Drawing;    using System.Runtime.InteropServices;    using Microsoft.Win32;    using System.Reflection;  

  • C#检测是否有危险字符的SQL字符串过滤方法

    本文以一个C#的SQL数据库字串操作函数为例,说明如何实现对SQL字符串过滤.检测SQL是否有危险字符.修正sql语句中的转义字符,确保SQL不被注入等功能.具体实现代码如下: SQL字符串过滤函数: public static bool ProcessSqlStr(string Str) { bool ReturnValue = true; try { if (Str.Trim() != "") { string SqlStr = "exec|insert+|select+

  • C#实现回文检测的方法

    本文实例讲述了C#实现回文检测的方法.分享给大家供大家参考.具体分析如下: 回文:称正读和反读都相同的字符序列为"回文",如"abba"."abccba".12321.123321是"回文","abcde"和"ababab"则不是"回文". Console.WriteLine("算法:请输入一个字符串!"); string str = Consol

  • C#图像处理之头发检测的方法

    本文实例讲述了C#图像处理之头发检测的方法.分享给大家供大家参考.具体如下: //发色检测(YCbCr颜色空间) public Bitmap HairD(Bitmap a) { Rectangle rect = new Rectangle(0, 0, a.Width, a.Height); System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWr

  • C#数字图象处理之肤色检测的方法

    本文实例讲述了C#数字图象处理之肤色检测的方法.分享给大家供大家参考.具体如下: //定义肤色检测函数(可供人脸检测等研究使用) public Bitmap SkinDetect1(Bitmap a) { Rectangle rect = new Rectangle(0, 0, a.Width, a.Height); System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageL

  • C#检测DataSet是否为空的方法

    本文实例讲述了C#检测DataSet是否为空的方法.分享给大家供大家参考.具体如下: 下面的代码片段通过判断DataSet的Table数量来判断DataSet是否为空 DataSet dt = new DataSet(); if (dt.Tables.Count>0) // has tables in it { //dataset is not empty } else { // otherwise it is empty } 希望本文所述对大家的C#程序设计有所帮助.

  • C#检测两个矩阵是否相等的方法

    本文实例讲述了C#检测两个矩阵是否相等的方法.分享给大家供大家参考.具体分析如下: 该方法并不检测矩阵中没一个单元格的值是否相等,因为其类型是double,只是检测单元格的值是否接近,double也不能判断相等. static bool areMatricesEqual(double[][] matrixOne,double[][] matrixTwo,double delta) { int aRows = matrixOne.Length; int bCols = matrixTwo[0].L

  • C#检测上传文件真正类型的方法

    本文实例讲述了C#检测上传文件真正类型的方法.分享给大家供大家参考.具体分析如下: 对于用户上传的文件如果只是根据扩展名判断,很容易上传上来可执行文件,这是非常危险的,这段代码可以在服务器端检测上传文件的真实类型. <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

  • c#检测端口是否被占用的简单实例

    当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 . 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被占用. 命名空间System.Net.NetworkInformation下定义了一个名为IPGlobalProperties的类,我们使用这个类可以获取所有的监听连接,然后判断端口是否被占用,代码如下: 复制代码 代码如下: public static bool PortInUse(int por

  • C#图像边缘检测(Roberts)的方法

    本文实例讲述了C#图像边缘检测(Roberts)的方法.分享给大家供大家参考.具体如下: //定义roberts算子函数 private static Bitmap robert(Bitmap a) { int w = a.Width; int h = a.Height; try { Bitmap dstBitmap = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); System.Drawing.Imag

随机推荐