我是靠谱客的博主 魁梧音响,最近开发中收集的这篇文章主要介绍批量跨帧提取人脸视频中的脸部区域帧图像python,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码实现功能

1、所有人脸视频在一个文件夹中。
2、跨帧提取帧图像。
3、截取帧图像的脸部区域。
3、将截取到的所有脸部图像保存到新文件夹中。

代码语言:python3.6

#这个代码实现了批量跨帧提取视频帧图像,并使用MTCNN截取帧图像中的脸部区域,然后保存
#(1)视频来自一个文件夹中
#(2)截取的人脸图像会全部存在新文件夹中

import os
import cv2
from mtcnn.mtcnn import MTCNN
from PIL import Image
import numpy as np
import os

videos_src_path = 'E:/wangqin/forensics++ datasets/manipulated_sequences/NeuralTextures/c23/videos/'
videos_save_path = 'E:/wangqin/forensics++ datasets/Image/fake/NeuralTextures/'

videos = os.listdir(videos_src_path)
detector = MTCNN()

i = 1

for each_video in videos:
    # if not os.path.exists(videos_save_path + '/' + str(i)):
    #     os.mkdir(videos_save_path + '/' + str(i))
    # each_video_save_full_path = os.path.join(videos_save_path, str(i)) + '/'
    each_video_full_path = os.path.join(videos_src_path, each_video)
    cap = cv2.VideoCapture(each_video_full_path)

    print('正在处理第{}视频,一共{}个视频'.format(i, len(videos)))

    frame_count = 0
    success = True

    while (success):
        success, frame = cap.read()
        if success==True:
            frame_count += 1
            if (frame_count % 10 == 0):
                detected = detector.detect_faces(frame)
                if len(detected) > 1:  # 人脸数量大于一个,跳过
                    continue
                if len(detected) < 1:  # 没检测到人脸,跳过
                    continue
                bbox = detected[0]["box"]
                h, w = frame.shape[0], frame.shape[1]
                x1 = max(0, bbox[0])
                y1 = max(0, bbox[1])
                cv2.imwrite(videos_save_path + "i%d.jpg" % i + "frame%d.jpg" % frame_count,
                            frame[y1:y1 + bbox[3], x1:x1 + bbox[2]])


    i = i + 1

    cap.release()

最后

以上就是魁梧音响为你收集整理的批量跨帧提取人脸视频中的脸部区域帧图像python的全部内容,希望文章能够帮你解决批量跨帧提取人脸视频中的脸部区域帧图像python所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部