【Python】動画から顔だけを検出して保存する
こんにちは。
前回、動画内にある顔を検出して枠で囲むコードを紹介しましたが、
今回は、動画内にある顔を検出してjpg形式で保存するコードを紹介します。
mai.py
import cv2
def save_positive_images(video_path, output_folder):
cap = cv2.VideoCapture(video_path)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_alt.xml')
frame_count = 0
face_count = 0
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
face = frame[y:y+h, x:x+w]
output_path = f"{output_folder}/face1_{face_count}.jpg"
cv2.imwrite(output_path, face)
face_count += 1
frame_count += 1
cap.release()
print(f"Saved {face_count} positive images from {frame_count} frames.")
# 動画ファイルのパス
video_path = 'ABC.mp4'
# イメージの保存先フォルダ
output_folder = 'new_images'
# 動画から顔を検出してイメージとして保存
save_positive_images(video_path, output_folder)
事前に、mai.pyファイルが保存されているフォルダ内に、「new_images」というフォルダを作成してください。
動画ファイル名は適宜変更してください。
どうしても、顔以外のものが検出されてしまうことがあります。
仕方ないですね。
この記事が気に入ったらサポートをしてみませんか?