10行代码教你用python识别黄色图片

10行代码教你用python识别黄色图片

10行代码教你用python识别黄色图片

大家好,今天我们来教大家用python识别黄色图片,识别黄色图片的算法有很多,今天来讲一个最简单的算法,仅需10行代码。

算法原理:将图片转换为YCbCr模式,在图片中寻找图片色值像素,如果在皮肤色值内的像素面积超过整个画面的1/3,就认为是黄色图片。

好了,原理很简单,那我们来编写代码试试

实战

需要安装python图片库PIL支持,PIL是Python平台事实上的图像处理标准库,支持多种格式,并提供强大的图形与图像处理功能。目前PIL的官方最新版本为1.1.7,支持的版本为python 2.5, 2.6, 2.7,并不支持python3,因此我们用pillow代替,进入DOS命令行窗口,敲入以下代码

pip install pillow

ok,安装完pil后我们来写核心算法代码

新建python文件porn_detect.py如下:

import sys,PIL.Image as Image
img = Image.open(sys.argv[1]).convert('YCbCr')
w,h = img.size #获取图片的宽高
data = img.getdata()
cnt = 0
for i, ycbcr in enumerate(data): #获取图片的ycbcr值
	y, cb, cr = ycbcr
	if 86 <= cb <= 117 and 140 <= cr <= 168:#皮肤区域色值检测累积
	cnt += 1
	print '%s %s 黄图.'%(sys.argv[1], '是' if cnt > w * h * 0.3 else '不是')
保存后运行:

python porn_detect.py photo.png

总结

这个算法用在简单场景还是够用了,如果场景复杂一点就不太准确了,

例如:整个图片是人的头像,那么皮肤色值的像素累积必然超过3/1,采用上面的算法就会被认为是黄图


{{collectdata}}

网友评论0