文章插图
大家好,今天我们来教大家用Python识别黄色图片,识别黄色图片的算法有很多,今天来讲一个最简单的算法,仅需10行代码 。
算法原理:将图片转换为YCbCr模式,在图片中寻找图片色值像素,如果在皮肤色值内的像素面积超过整个画面的1/3,就认为是黄色图片 。
好了,原理很简单,那我们来编写代码试试
实战
需要安装python图片库PIL支持,PIL是Python的图像处理标准库,支持多种格式,并提供强大的图形与图像处理功能 。目前PIL的官方最新版本为1.1.7,支持的版本为python 2.5, 2.6, 2.7,并不支持python3,因此我们用pillow代替,安装命令如下
pip install pillow
ok,安装完pillow后我们来写核心算法代码新建python文件detect_porn.py如下:
import sys,PIL.Image as Imageimg = Image.open(sys.argv[1]).convert('YCbCr')w,h = img.size #获取图片的宽高data = https://www.isolves.com/it/cxkf/yy/Python/2020-08-28/img.getdata()cnt = 0for i, ycbcr in enumerate(data): #获取图片的ycbcr值y, cb, cr = ycbcrif 86 <= cb <= 117 and 140 <= cr <= 168:#皮肤区域色值检测累积cnt += 1print '%s %s 黄图.'%(sys.argv[1], '是' if cnt > w * h * 0.3 else '不是')
保存后运行:python detect_porn.py photo.png
总结这个算法用在简单场景还是够用了,如果场景复杂一点就不太准确了,
例如:整个图片如果是人的头像,那么皮肤色值的像素累积必然超过3/1,采用上面的算法就会被认为是黄图,有点牵强了,不过可以先识别有没有头部以下区域,然后再使用此算法判断,更高级一点的就是将涉黄图片给python,让它自己看自己学习判断,训练一个模型,然后调优就好了 。
好了,大家有什么要说的可以在下方评论 。
【10行代码教你用python鉴黄】
推荐阅读
- 5+2教育模式是什么意思?
- 教师节简短独特祝福语有哪些?
- 普洱生茶泡法教程,盖碗泡普洱生茶的方法
- 教你如何选购红茶,如何选购玻璃茶具
- 内网穿透外网访问内网 MySQL 等数据库教程
- 删库一定要跑路吗?手把手教你MySQL数据恢复
- 韩国的饮食茶,韩国茶人讨教武夷茶艺
- 从硬盘发展史到硬盘科普,1万多字彻底教会你硬盘如何选择
- 教你一个万能的PPT排版小技巧,简单易学,而且什么场合都能用
- 安塞腰鼓的简单教程