cv2识别视频中拥有人像的部分

1. 引用包

import cv2
from moviepy.editor import VideoFileClip
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip

2. 定义人脸识别部分的代码(此部分之后作为修改为识别并截取人像背景的函数)

def find_faces(img):
    eys_cascade = cv2.CascadeClassifier("I:/test/pythonProject/venv/Lib/site-packages/cv2/data/haarcascade_fullbody.xml")

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = eys_cascade.detectMultiScale(gray, 1.3, 5)
    return faces

3. 定义剪切视频的部分(此后修改为全视频,不在删减而是替换帧)

复制代码
def find_durations(clip):
    """
        从视频中搜索人物片段
    """

    duration_list = []  # 存储片段时间列表
    start_time = 0  # 记录片段开始时间, 以毫秒为单位
    end_time = 0  # 记录片段结束时间, 以毫秒为单位
    for i, img in enumerate(clip.iter_frames(fps=20)):
        faces = find_faces(img)

        print(i, faces)

        # 若发现人物出现且未记录开始时间,记为开始时间
        if len(faces) > 1 and start_time == 0:
            start_time = i / 20

        # 若已记录开始时间且人物消失,记为结束时间

        # 并将开始时间和结束时间添加到片段时间列表中并重置开始时间和结束时间
        if start_time > 0 and len(faces) == 0:
            end_time = i / 20
            duration_list.append([start_time, end_time])

            # 重置开始时间和结束时间
            start_time = end_time = 0

    # 打印片段时间列表并返回
    print(duration_list)
    return duration_list
复制代码

4. main函数

if __name__ == "__main__":
    filename = "database/test.mp4"
    clip = VideoFileClip(filename)
    durations = find_durations(clip)
    for d in durations:
        start_t, end_t = d
        ffmpeg_extract_subclip(filename, start_t, end_t)

5. 机器学习基本概念

目的:找到一种方法,使得计算机通过数据分析、自我学习等方式去实现分析、预测等功能。

机器学习分类:监督学习、无监督学习、强化学习

训练方式:在线训练、离线训练

三要素:方式=模型+策略+算法

 

posted @   韦德·沃兹  阅读(240)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示