見出し画像

【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」というフォルダを作成してください。

動画ファイル名は適宜変更してください。

どうしても、顔以外のものが検出されてしまうことがあります。
仕方ないですね。

この記事が気に入ったらサポートをしてみませんか?