# -*- coding: utf-8 -*-
# for Python 3.4, 3.5
import cv2
def mozaic(cascade, image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = cascade.detectMultiScale(
gray, scaleFactor=1.11, minNeighbors=4, minSize=(5, 5))
# 検出した部分を縮小して、拡大(最近傍補間)する
for [x, y, w, h] in faces:
face = image[y:(y + h), x:(x + w)]
face_tmp = cv2.resize(face, (int(w/20),int(h/20)))
face = cv2.resize(
face_tmp, (w,h), interpolation=cv2.INTER_NEAREST)
image[y:(y + h), x:(x + w)] = face
return image
# デバイスは固定
cap = cv2.VideoCapture(0)
if cap.isOpened() is False:
raise("IO Error.")
# haarcascade_frontalface_alt.xmlは下記から持ってくる
# https://github.com/opencv/opencv/tree/master/data/haarcascades
cascade_path = "haarcascade_frontalface_alt.xml"
cascade = cv2.CascadeClassifier(cascade_path)
while True:
ret, frame = cap.read()
frame = mozaic(cascade, frame)
cv2.imshow('image', frame)
k = cv2.waitKey(1)
if k == 27:
break;
cap.release()
cv2.destroyAllWindows()
2017年8月7日月曜日
顔を認識してモザイクをかける@OpenCV3 + Python3
USBカメラなどから画像を取り込んで、顔と認識した部分にモザイクを掛けます。
都度顔認識していますので、物体追跡させて方が効率がいいのかも。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿