python黄色認証プログラム

5360 ワード

最近お客様がサーバーにゴミの画像をアップロードして、普通の画像と混ぜて、10 W枚ぐらいの数があって、3時間ぐらい経って2000枚以上をめくったとき、指を抜いて、気分が悪くて、無理に頭の上で、プログラムを書いて鑑別しましょう.しかし、どうしますか.ネット上で資料をめくって同僚の協力を経て、ついにこの命中率の高くないプログラムを完成させました:
コードは次のとおりです.
# -*- coding: utf8 -*-
# Author:wxq
#python 2.7
import sys
import os
import os.path as p
import shutil
import _io
from collections import namedtuple
from PIL import Image

def check_porn(file):
    img = Image.open(file).convert('YCbCr')
    w, h = img.size
    data = img.getdata()
    cnt = 0
    for i, ycbcr in enumerate(data):
        y, cb, cr = ycbcr
        if 86 <= cb <= 117 and 140 <= cr <= 168:
            cnt += 1
    if cnt > w * h * 0.1:
        return True
    else:
        return False

if __name__ == '__main__':
    imgdir = sys.argv[1]
    dstdir = sys.argv[2]
    if imgdir == '' or dstdir == '':
        raise Exception('      ,   : porn_check.py  ')
    if p.isdir(imgdir):
        filelist = [p.join(imgdir, file) for file in os.listdir(imgdir)]
    else:
        raise Exception('    ,        ')
        sys.exit(1)
    if not p.isdir(dstdir):
        raise Exception('    ,        ')

    for file in filelist:
        if p.isfile(file):
            is_porn = check_porn(file)
            if is_porn:
                print(file, 'is porn')
                shutil.move(file, dstdir)
            else:
                print(file, 'is not porn')

暇な时間にpythonを勉強して、最適化を期待して、鑑黄率を100%に高めて、すべての会社の利益と公共のサイバーセキュリティに危害を及ぼすことを根絶することを努力しています.
転載先:https://www.cnblogs.com/itor/p/7687013.html