Webカメラを用いた認識の初歩としてまずは顔認識をおさらい。
そのうえで認識された顔にモザイクをかける処理をする。
すこし動かしてみたが、あまりスムーズにはモザイクがかからない模様。
また背景がごちゃごちゃしていると顔認識もうまくいかなかったりするようだ。
この辺りは最近の機械学習等でより精度の高い認識ができているのかな?と思っている。
コード例
import numpy as np import cv2 face_cascade = cv2.CascadeClassifier('C:\Anaconda3\pkgs\opencv3-3.1.0-py35_0\Library\etc\haarcascades\haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(2) def mosaic(img, alpha): # 画像の高さと幅 w = img.shape h = img.shape[0] # 縮小→拡大でモザイク加工 img = cv2.resize(img,(int(w*alpha), int(h*alpha))) img = cv2.resize(img,(w, h), interpolation=cv2.INTER_NEAREST) return img while True: ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) for x, y, w, h in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) face = img[y: y + h, x: x + w] face_gray = gray[y: y + h, x: x + w] img[y:y+h, x:x+w] = mosaic(img[y:y+h, x:x+w], 0.05) cv2.imshow('img', img) key = cv2.waitKey(10) if key == 27: # ESCキーで終了 break cap.release() cv2.destroyAllWindows()