C#图像处理之头发检测的方法
作者:沧海一粟…… 发布时间:2023-11-08 22:10:28
标签: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.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#程序设计有所帮助。


猜你喜欢
- 目录一、ThreadLocal简介二、ThreadLocal简单使用三、ThreadLocal的实现原理1、set方法源码2、get方法源码
- 本文实例为大家分享了TabLayout结合ViewPager实现页面切换效果的具体代码,供大家参考,具体内容如下先看看效果,如图:1.因为T
- 1、什么是OpenCVSharp 为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的
- 不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单的配置就能够让Spring MVC显示您自定义的40
- 一、需要导入的jar1.commons-collections4-4.1.jar2.poi-3.17-beta1.jar3.poi-ooxm
- Feign传递请求头信息在我之前的文章服务网关Spring Cloud Zuul中,将用户的登录id放在了请求头中传递给内部服务。但是当内部
- 在我们开发过程中用 Mybatis 经常会用到下面的例子Mapper如下Map<String ,String > testArr
- java生成json隐藏关键属性今天在工作中遇到一个这样的问题,当后端返回数据时一些关键信息或敏感信息并不想返回到前端,但是又懒得定义专用的
- java中的方法重载和方法重写有很多区别。 下面给出了方法重载和方法覆盖之间的差异列表:编号方法重载方法重写1方法重载用于提高程序的可读性。
- 今天看到已经更新了devblogs,新增的C# 11的!!(用于检查null的语法)经过非常长的讨论,最后取消了。然后我又想起来null检查
- 现象说明maven的java项目,测试用例和main所在的源码文件均符合缺省写法和格式,但是在使用mvn clean sonar:sonar
- package com.test;import org.htmlparser.Node;import org.htmlparser.Node
- 本文同时讨论了IComparable和IComparer接口,原因有两点。这两个接口经常一起使用。虽然接口类似且名称相似,但它们却有不同的用
- 说明Flutter原生是没有支持数据库操作的,它使用SQLlit插件来使应用具有使用数据库的能力。其实就是Flutter通过插件来与原生系统
- 在Springboot项目中使用分页插件的时候 发现PageHelper插件失效了我导入的是:后来才发<dependency>
- 本人使用Android开发有一段时间了,但是本身没有系统学,而且多年专注服务端开发,总觉得因为项目需要接触Android移动端开发只是暂时的
- 我们都知道且经常用到 unsigned 关键字,但有没有想过,与此对应的 signed 关键字有啥用?int i = 0;signed in
- 如何从C#获取字符串中汉字的个数?C#中使用正则表达式来从字符串中判断出汉字,然后计数,从而得到字符串中的汉字个数。先看这段代码://首先引
- Android studio Run with --stacktrace option to get the stack tra
- Web基础和HTTP协议┌─────────┐┌─────────┐