用 Python 鑑別色色的圖片

0 前言

實話實說啊,這個標題起得就有點標題黨,識別是識別,準確率就有點玄學了。git

1 環境說明

Win10 系統下 Python3,編譯器是 Pycharm,須要安裝 nonude 這個庫。github

Pycharm 安裝第三方庫的方法。
spa

2 代碼

2.1 識別少許圖片

先導入 nonude 這個庫(我也很奇怪爲何 import 的是 nude)code

import nude

再寫出代碼orm

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

對了,我這裏是直接把圖片放在了項目的路徑裏的

若是不喜歡這樣,能夠換一個寫法blog

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.jpg011idk8.jpg

說一下,路徑裏面的斜槓 / 能夠是反斜槓 ,若是後面有數字的話,請使用斜槓 /,不要用反斜槓 。ip

2.2 識別文件夾中的圖片

先導入要用的庫rem

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% 就判斷爲色色的圖片。這裏只是很粗淺的說明,還有一些我沒有看懂。

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

nonude 的最近一次更新是兩年前了,感受有點惋惜,但願做者能繼續維護。

文章首發於本人公衆號,歡迎關注~
clipboard.png

相關文章
相關標籤/搜索