openFrameworks下的肤色检测源码

简介: openFrameworks下的肤色检测源码

直接上源码:

void testApp::ofSkinDetector(unsigned char* Pointer, ofImage& image, int CAMERA_WIDTH, int CAMERA_HEIGHT)
{
  int len = CAMERA_WIDTH * CAMERA_HEIGHT * 3;
  unsigned char* SkinP= new unsigned char[len];
  for (int Y = 0; Y < CAMERA_HEIGHT; Y++)
  {
    for (int X = 0; X < CAMERA_WIDTH; X++)
    {
      unsigned char Red = Pointer[CAMERA_WIDTH * Y * 3 + X * 3];
      unsigned char Green = Pointer[CAMERA_WIDTH * Y * 3 + X * 3 + 1];
      unsigned char Blue = Pointer[CAMERA_WIDTH * Y * 3 + X * 3 + 2];
      unsigned char Max = 0, Min = 0;
      if (Red > 95 && Green > 40 && Blue > 20 && Red > Blue && Red > Green && abs(Red - Green) > 15)
      {
        if (Blue >= Green)     
        {
          Max = Blue;
          Min = Green;
        }
        else
        {
          Max = Green;
          Min = Blue;
        }
        if (Red > Max)
          Max = Red;
        else if (Red < Min)
          Min = Red;
        if (Max - Min > 15) 
        {
          SkinP[CAMERA_WIDTH * Y * 3 + X * 3] = 255;
          SkinP[CAMERA_WIDTH * Y * 3 + X * 3 + 1] = 255;
          SkinP[CAMERA_WIDTH * Y * 3 + X * 3 + 2] = 255;
        }
      }
    }
  }
  image.setFromPixels(SkinP, CAMERA_WIDTH, CAMERA_HEIGHT, OF_IMAGE_COLOR);
  delete SkinP;
  SkinP = NULL;
}

感谢这位博主的博文: 参考博客链接,以上代码也是基于该博文进行的修改。

目录
相关文章
|
7月前
|
算法 NoSQL 安全
30万的源码和300的源码有什么区别?
价格差异巨大的源码(30万对300)主要区别在于质量、完整性和技术支持。高质量源码通常有清晰结构、高效算法、良好文档,提供全面的技术支持,安全稳定且来自信誉良好的开发者。而低价源码可能存在问题、缺乏文档和支持。选择时需结合实际需求,注意测试和评估。示例中的AI导诊系统和云HIS系统源码,提供完整文档、数据库和二次开发支持,适用于不同场景,能有效提升开发效率和项目质量。
30万的源码和300的源码有什么区别?
|
7月前
看源码的方法
看源码的方法
100 1
|
JavaScript
源码
源码
|
程序员 开发工具 C++
|
消息中间件 网络协议 Java
eventMesh源码学习
eventMesh源码学习
215 0
|
安全 Java
ReentranLock源码学习
线程的三大特性:原子性、可见性、有序性。也就是说满足这个三个特性的操作都是可以保证安全的,如Atomic包、volatile、通过happensBefore原则可以进行线程的安全的判断,这个依据通常是为了避免jvm指令重排。比如通常我们知道的配置信息,如果有多个线程去进行配置信息的修改,则需要进行上锁。或者多个线程修改一个变量时,此时就需要进行上锁了,或者读写分离时,可以考虑ReentrantReadWriteLock等。其本质是解决并行中的问题,将并行转成串行问题进行解决。那怎么上锁才有用呢?锁的状态大部分情况下是互斥的。当然也有特例:ReentrantReadWriteLock的读读是不会
99 0
ReentranLock源码学习
|
存储 人工智能 安全
C++学习必备——文章中含有源码
C++学习必备——文章中含有源码
123 0
C++学习必备——文章中含有源码
|
算法 NoSQL 前端开发
为什么要看源码、如何看源码,高手进阶必看
为什么要看源码、如何看源码,高手进阶必看
281 0
|
存储 Android开发 C++
看Ogrekit源码的小结
看Ogrekit源码的小结
114 0
|
数据采集 JavaScript Go
colly源码学习
colly源码学习   colly是一个golang写的网络爬虫。它使用起来非常顺手。看了一下它的源码,质量也是非常好的。本文就阅读一下它的源码。 使用示例 func main() { c := colly.
1648 0