python少儿不宜图片识别(基于肤色数量),18岁以下勿进

思路:

一、打开图片,转换为YCbCr 格式,

二、根据 cb 、 cr 值判断当前像素是否为皮肤

三、计算图片中皮肤所占的像素数量。如果该数量超过图片总像素的30%,则判断为色情图片

结论:

1、算法比较简单,容易实现。

2、如果是纯色情图片,这个算法识别率较高

3、如果穿有一定数量的衣服干扰,或者人物在图片中占比较小,误判率较高

4、大头照容易误判

5、没有判断图片是否是人还是动物

6、图片像素大于10万时速度较慢,最好先缩放一下

 1 #如果你需要一份系统的学习资料,那么你可以考虑Python学习交流群:548377875。
 2 ##coding=utf-8
 3 #根据肤色数量判断
 4 from PIL import Image
 5 basedir=r'D:\Python\PycharmProjects\nudedetection\imag2'
 6 import os
 7 for filename in os.listdir(basedir):
 8     full_filename=os.path.join(basedir,filename)
 9     img = Image.open(full_filename).convert('YCbCr')
10     w, h = img.size
11     data = img.getdata()
12     cnt = 0
13     for i, ycbcr in enumerate(data):
14         y, cb, cr = ycbcr
15         if 86 <= cb <= 117 and 140 <= cr <= 168:
16             cnt += 1
17     print '%s is a porn image?:%s.'%(filename, 'Yes' if cnt > w * h * 0.3 else 'No')

猜你喜欢

转载自www.cnblogs.com/Python6359/p/9592995.html