0 前言

实话实说啊,这个标题起得就有点标题党,识别是识别,准确率就有点玄学了。

1 环境说明

Win10 系统下 Python3,编译器是 Pycharm,需要安装 nonude 这个库。

Pycharm 安装第三方库的方法。

2 代码

2.1 识别少量图片

先导入 nonude 这个库(我也很奇怪为什么 import 的是 nude)

import nude

再写出代码

print(nude.is_nude("godfather.jpg"))
print(nude.is_nude("leisheng.jpg"))
print(nude.is_nude("qiaoba.png"))

代码运行的结果居然是 False、True、True

让我们来看一下图片。

godfather.jpg

leisheng.jpg

qiaoba.png

对了,我这里是直接把图片放在了项目的路径里的

如果不喜欢这样,可以换一个写法

import nude
print(nude.is_nude("E:/Images/OOXX/00mitai.jpg"))
print(nude.is_nude("E:\Images\OOXX/00zkted.jpg"))
print(nude.is_nude("E:/Images\OOXX/011idk8.jpg"))

代码运行的结果是 False、True、False

00mitai.jpg

00zkted.jpg

011idk8.jpg

说一下,路径里面的斜杠 / 可以是反斜杠 \,如果后面有数字的话,请使用斜杠 /,不要用反斜杠 \。

2.2 识别文件夹中的图片

先导入要用的库

import glob
import itertools
from nude import Nude

这里用 glob 返回匹配指定模式的文件名

images_format = ['jpg', 'png', 'gif']  # 图片格式
images_jpg = glob.glob("E:/Images/OOXX/*.jpg")  # 返回匹配指定模式的文件名
images_png = glob.glob("E:/Images/OOXX/*.png")
images_gif = glob.glob("E:/Images/OOXX/*.gif")

itertools.chain 把迭代对象串联起来,形成一个更大的迭代器,说白了就是把 images_jpg、images_png、images_gif 弄在一起,变成了images_list。

然后进行循环,在 images_list 里面一个一个对图片进行识别。

images_list = itertools.chain(images_jpg, images_png, images_gif)

for i in images_list:
    print(i)  # 输出照片的路径
    n = Nude(i)  # 对图片进行识别
    n.parse()
    print(n.result)  # 输出结果
    print(n.message)  # 输出判断信息
    print(n.inspect())  # 输出更加详细的判断信息

运行结果如下图

TeamViewer_2018-05-14_19-45-57.png

我们来看一下下图片,准确率嘛,有点玄学。

图片还可以吧

3 说明

识别是不是色色的图片的有依据的,根据给出的信息来看,是皮肤暴露的百分比来判断的,暴露的比例大于 15% 就判断为色色的图片。这里只是很粗浅的说明,还有一些我没有看懂。

python学习交流群:125240963

nonude 的 GitHub 链接: https://github.com/gearsystems/nonude/

nonude 的最近一次更新是两年前了,感觉有点可惜,希望作者能继续维护。

转载至https://www.jianshu.com/p/16b0663f6209?

用 Python 鉴别色色的图片的更多相关文章

  1. Python爬虫02——贴吧图片爬虫V2.0

    Python小爬虫——贴吧图片爬虫V2.0 贴吧图片爬虫进阶:在上次的第一个小爬虫过后,用了几次发现每爬一个帖子,都要自己手动输入帖子链接,WTF这程序简直反人类!不行了不行了得改进改进. 思路: 贴 ...

  2. python 3编写贴吧图片下载软件(超简单)

    业余时间初学者作品,大佬勿喷,代码都很简单. py文件打包成exe教程:python3.7 打包成exe程序, 本程序体验下载地址:python编译的贴吧图片下载工具 先上效果图 启动后是这样的: 按 ...

  3. Python读取excel中的图片

    作为Java程序员,Java自然是最主要的编程语言.但是Java适合完成大型项目,对于平时工作中小的工作任务,需要快速完成,易于修改和调试,使用Java显得很繁琐,需要进行类的设计,打成jar包,出现 ...

  4. python爬取基础网页图片

    python基础爬虫总结 1.爬取信息原理 与浏览器客户端类似,向网站的服务器发送一个请求,该请求一般是url,也就是网址.之后服务器响应一个html页面给客户端,当然也有其他数据类型的信息,这些就是 ...

  5. python 3 爬取百度图片

    python 3 爬取百度图片 学习了:https://blog.csdn.net/X_JS612/article/details/78149627

  6. python+requests抓取页面图片

    前言: 学完requests库后,想到可以利用python+requests爬取页面图片,想到实战一下.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图片,所以我选取饿 ...

  7. Python:爬取网站图片并保存至本地

    Python:爬取网页图片并保存至本地 python3爬取网页中的图片到本地的过程如下: 1.爬取网页 2.获取图片地址 3.爬取图片内容并保存到本地 实例:爬取百度贴吧首页图片. 代码如下: imp ...

  8. python中学习K-Means和图片压缩

    python中学习K-Means和图片压缩 大家在学习python中,经常会使用到K-Means和图片压缩的,我们在此给大家分享一下K-Means和图片压缩的方法和原理,喜欢的朋友收藏一下吧. 通俗的 ...

  9. 【PyMuPDF和pdf2image】Python将PDF转成图片

    前言: 在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试. 粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python ...

随机推荐

  1. 【59】Quartz+Spring框架详解

    什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中"job sc ...

  2. ruby创建某些“关键字”方法别名的语法

    begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begi ...

  3. Jmeter(二十四)_服务器性能监控

    下载插件 1.访问网址http://jmeter-plugins.org/downloads/all/,下载三个文件.其中JMeterPlugins-Standard和JMeterPlugins-Ex ...

  4. ELF 动态链接 so的动态符号表(.dynsym)

    静态链接中有一个专门的段叫符号表 -- ".symtab"(Symbol Table), 里面保存了所有关于该目标文件的符号的定义和引用. 动态链接中同样有一个段叫 动态符号表 - ...

  5. CentOS 7 下安装mosquitto

    简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把 ...

  6. css左侧固定宽度右侧自适应

    左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到 ...

  7. Linux笔记2

    touch 创建文件. echo  输出   >> 将输出写入到文件中   echo sss >> a.txt cat   查看文件内容 帮助命令   man  命令 man ...

  8. Python 爬取美团酒店信息

    事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...

  9. python---生成器、迭代器

    # -*- coding:utf-8 -*- # LC # 列表生成式 def func(x): print(x) return 2*x print([ func(i) for i in range( ...

  10. jsoup 使用总结3--高级用法之 not

    jsoup 使用总结3--高级用法之 not 大部分时候,我们使用jsoup解析网页的时候,都是直接找到某一类元素,或者按某种selector查询:具体使用方法可以参考jsoup官网文档 例子代码: ...