当前位置: 首页 > news >正文

网站主页模板 优帮云中天建设哪里的

网站主页模板 优帮云,中天建设哪里的,北京宏福建设工程有限公司网站,哈尔滨网站建设网站初始检测:只在视频的前几秒内进行一次人脸检测,以确定主持人的大致位置。计算裁剪框:基于检测到的主持人位置,计算一个以主持人面部为中心的固定裁剪框。视频裁剪:使用计算出的裁剪框对整个视频进行裁剪,将…
  1. 初始检测:只在视频的前几秒内进行一次人脸检测,以确定主持人的大致位置。
  2. 计算裁剪框:基于检测到的主持人位置,计算一个以主持人面部为中心的固定裁剪框。
  3. 视频裁剪:使用计算出的裁剪框对整个视频进行裁剪,将视频分辨率调整为512x512。 帧率调整:将视频帧率调整至25fps。
  4. 音频保留:确保裁剪和帧率调整后的视频音频与原视频同步。

以下是优化后的代码:

import cv2
import numpy as np
import face_recognition
from moviepy.editor import VideoFileClip, AudioFileClip
from tqdm import tqdmdef find_host_face_location(video_path):""" 在视频的前几秒内检测并返回主持人面部的大致位置 """cap = cv2.VideoCapture(video_path)found_face = Falsewhile cap.isOpened():ret, frame = cap.read()if not ret:break# 缩小帧尺寸以加快处理速度small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)rgb_small_frame = small_frame[:, :, ::-1]# 检测人脸face_locations = face_recognition.face_locations(rgb_small_frame)if face_locations:# 取第一张脸的位置,假设主持人位于视频画面的中心位置附近host_face_location = face_locations[0]# 将位置放大回原始大小host_face_location = (host_face_location[0]*4, host_face_location[1]*4, host_face_location[2]*4, host_face_location[3]*4)found_face = Truebreak# 如果已经处理了前10秒的视频,且没有找到人脸,则退出循环if cap.get(cv2.CAP_PROP_POS_MSEC) > 10000:breakcap.release()return host_face_location if found_face else Nonedef calculate_cropping_box(face_location, frame_shape):""" 根据主持人面部位置计算裁剪框 """top, right, bottom, left = face_locationcenter_x, center_y = (left + right) // 2, (top + bottom) // 2half_width, half_height = 256, 256left_cropped = max(center_x - half_width, 0)top_cropped = max(center_y - half_height, 0)right_cropped = min(center_x + half_width, frame_shape[1])bottom_cropped = min(center_y + half_height, frame_shape[0])return (top_cropped, right_cropped, bottom_cropped, left_cropped)def process_video(input_path, output_path):""" 处理视频,裁剪并调整帧率 """# 检测主持人面部位置host_face_location = find_host_face_location(input_path)if host_face_location is None:print(f"No face detected in video {input_path}")return# 读取视频,获取视频的宽度和高度clip = VideoFileClip(input_path)frame_shape = clip.size[::-1]  # 电影剪辑的尺寸是(width, height),我们需要(height, width)# 计算裁剪框cropping_box = calculate_cropping_box(host_face_location, frame_shape)# 裁剪视频cropped_clip = clip.crop(x1=cropping_box[3], y1=cropping_box[0], x2=cropping_box[1], y2=cropping_box[2])cropped_clip = cropped_clip.resize((512, 512))# 调整帧率cropped_clip = cropped_clip.set_fps(25)# 保存最终视频cropped_clip.write_videofile(output_path, codec='libx264', audio_codec='aac')# 清理资源cropped_clip.close()if __name__ == "__main__":for i in tqdm(range(1, 75), desc="Processing videos"):input_path = f"data/{i}/{i}.mp4"output_path = f"data/{i}/{i}_fc1.mp4"process_video(input_path, output_path)

代码解释

  1. find_host_face_location 函数:这个函数负责在视频的前几秒内查找主持人面部的大致位置。我们假设主持人在视频开始时就已经出现在画面中,并且通常位于画面的中心位置附近。

  2. calculate_cropping_box 函数:根据主持人面部的位置计算出一个裁剪框,使得裁剪后的视频以主持人面部为中心。

  3. process_video 函数:此函数执行视频的裁剪和帧率调整。首先,我们使用find_host_face_location函数找到主持人面部的位置。接着,使用calculate_cropping_box函数计算裁剪框。然后,我们使用moviepy库来裁剪视频、调整尺寸和帧率,并保存最终的视频。

注意事项

  • 我们假定主持人在视频开始时就已经出现并且位置相对固定。如果主持人在视频中移动或有多个主持人,此方法可能需要进一步的调整。
  • 使用moviepy进行视频处理可以简化代码并提高效率,但请注意moviepy对视频文件的读写操作可能会消耗较多资源。

确保在运行此代码之前,已经安装了face_recognitionmoviepy库及其依赖项。如果在执行过程中遇到任何问题,如资源限制或库版本冲突,请相应地调整配置或更新库版本。

http://www.yayakq.cn/news/765335/

相关文章:

  • 苏州工业园区两学一做网站黄页大全
  • 开网站赚钱吗河南郑州广城区
  • 秦皇网站建设如何做html网站
  • 化妆品网站模板网站备案图标
  • 网站推广的目的是什么常州网站建设方案
  • 大型网站建设就找兴田德润网站开发开题报告范文
  • 服装网上商城网站建设报告在线快速建站
  • 网站客户端制作哪些网站可以下载视频
  • 做网站项目流程图模板wordpress的seo标题怎么写
  • 做房产网站在百度推广推广费建设阅读网站的目的
  • 专业建站推广企业百度推广在哪里能看到
  • 网上做物理题赚钱的网站网页制作接单
  • 网站空间后台密码建设网站需申请什么
  • 普通网站和营销型网站的区别wordpress加链接
  • 高度国际装饰公司官网北海seo快速排名
  • 做网站如何处理并发问题网站点击按钮排序
  • 网站开发 所有权wordpress 免登陆接口
  • 做便宜网站山西太原建站怎么做
  • 网站备案地wordpress二次打开
  • 怎么把别人网站源码弄出来室内设计公司名字起名大全
  • 服装企业微网站建设网站加载速度优化
  • 做网站注册营业执照尚易企业邮箱登录入口
  • 网站开发人员是干嘛的学做PPT报告的网站
  • 网站点击量设计浙江苏省城乡建设厅网站
  • 合肥网站设计哪家公司好有原型怎么做网站
  • 找公司做网站运营怎么样wordpress 上传图片自动命名
  • 哪个网站可以做思维导图网站快速收录方法
  • 网站内容编辑工具绍兴做外贸网站的公司
  • 泰安网络推广公司怎么样上海seo关键字推广
  • 甘肃自助建站系统怎么用建设工程施工合同示范文本的性质