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

作者:沧海一粟…… 时间:2023-11-08 22:10:28 

本文实例讲述了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.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
 int stride = bmpData.Stride;
 unsafe
 {
  byte* pIn = (byte*)bmpData.Scan0.ToPointer();
  byte* p;
  int R, G, B;
  double Cr, Cb,BrightV;
  for (int y = 0; y < a.Height; y++)
  {
    for (int x = 0; x < a.Width; x++)
    {
    p = pIn;
    R = p[2];
    G = p[1];
    B = p[0];
    Cb = 128 - 37.797 * R / 255 - 74.203 * G / 255 + 112 * B / 255;
    Cr = 128 + 112 * R / 255 - 93.768 * G / 255 - 18.214 * B / 255;
    BrightV = (R + G + B) / 3;
    if (!(Cb >= 115 && Cb <= 141 && Cr >= 115 && Cr <= 143 && (R < 35)))
    {
      pIn[0] = (byte)255;
      pIn[1] = (byte)255;
      pIn[2] = (byte)255;
    }
    pIn += 3;
    }
    pIn += stride - a.Width * 3;
  }
 }
 a.UnlockBits(bmpData);
 return a;
}
//定义最小值函数
public double Min(double a, double b, double c)
{
 double e = (a <= b ? a : b) <= c ? (a <= b ? a : b) : c;
 return e;
}
//定义最大值函数
public int Max(int a, int b, int c)
{
 int e = (a >= b ? a : b) <= c ? c : (a >= b ? a : b);
 return e;
}

结果图像效果:

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

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

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

标签:C#,图像
0
投稿

猜你喜欢

  • 浅谈C#中ListView类的用法

    2022-03-01 16:50:51
  • Java即将引入新对象类型来解决内存使用问题

    2023-03-30 18:12:42
  • Java 实现FTP服务实例详解

    2023-06-18 10:45:25
  • MyBatis实现多表联合查询resultType的返回值

    2023-03-11 22:25:37
  • C# 添加对System.Configuration.dll文件的引用操作

    2022-03-05 22:20:31
  • Android ListView实现上拉加载下拉刷新和滑动删除功能

    2021-09-24 19:08:04
  • JAVA抽象类,接口,内部类详解

    2023-11-09 16:37:25
  • JVM代码缓存区CodeCache原理及用法解析

    2023-08-09 06:02:29
  • Spring在SingleTon模式下的线程安全详解

    2021-10-08 11:39:31
  • C#归并排序的实现方法(递归,非递归,自然归并)

    2023-10-03 01:00:36
  • Swing常用组件之单选按钮和复选框

    2023-02-15 13:35:05
  • java 中HashCode重复的可能性

    2021-09-13 17:38:05
  • C#执行存储过程并将结果填充到GridView的方法

    2022-08-08 06:25:38
  • Android实现美团外卖底部导航栏动画

    2022-09-21 20:09:13
  • 详解Java实现设计模式之责任链模式

    2023-11-08 10:32:07
  • java 算法之归并排序详解及实现代码

    2021-12-27 01:52:11
  • 详解spring boot rest例子

    2021-06-02 21:54:46
  • 深入理解Java垃圾回收机制以及内存泄漏

    2023-09-24 22:45:13
  • C#中foreach语句深入研究

    2022-11-15 00:30:17
  • win10下配置java环境变量的方法

    2022-08-23 17:10:11
  • asp之家 软件编程 m.aspxhome.com