原理:將圖片轉換爲YCbCr模式,在圖片中尋找圖片色值像素,若是在皮膚色值內的像素面積超過整個畫面的1/3,就認爲是黃色圖片。 python
申明:簡單場景仍是夠用了,稍微複雜一點就不許確了,例如:整幅畫面是人的頭像,皮膚色值的像素必然超過50%,被誤認爲黃色圖片就太武斷了。 shell
須要安裝python圖片庫PIL支持 code
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): y, cb, cr = ycbcr if 86 <= cb <= 117 and 140 <= cr <= 168: cnt += 1 print '%s %s a porn image.'%(sys.argv[1], 'is' if cnt > w * h * 0.3 else 'is not')運行:
python porn_detect.py myphoto.png