网站建网站建设seo帮帮您,惠州百度seo找谁,wordpress怎么修改ico,英文网站建设方案详细方案功能很简单#xff1a;输入原始视频#xff0c;输出视频中有画面变化的部分
适合理解基本框架#xff0c;可以在这个基础上增加各种酷炫时髦的功能 [doge]
※注释非常保姆级※
import cv2
import numpy as np
import os
from datetime import datetime# 检测两帧之间变化…功能很简单输入原始视频输出视频中有画面变化的部分
适合理解基本框架可以在这个基础上增加各种酷炫时髦的功能 [doge]
※注释非常保姆级※
import cv2
import numpy as np
import os
from datetime import datetime# 检测两帧之间变化
def detect_motion(frame1,frame2,threshold):# 计算两帧之间的绝对差异 diffcv2.absdiff(frame1,frame2)# 将差异图像转换为灰度图gray cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY) # 对灰度图进行高斯模糊减少噪声 blurcv2.GaussianBlur(gray,(5,5),0)# 对模糊后的图像进行二值化处理设置阈值 # thresh为二值化后的差异图像其中运动物体为白色255背景为黑色0_,threshcv2.threshold(blur,threshold,255,cv2.THRESH_BINARY)return thresh# 保存运动帧
# 参数threshold为差异阈值当像素差异大于此值时认为是运动可自行调整
def save_motion_frames(video_path,output_folder,threshold25):# 打开视频文件 capcv2.VideoCapture(video_path)# 截取视频文件名去掉扩展名如.mp4等命名输出文件时用video_namevideo_path[-14:-4]# 时-分-秒命名输出文件时用edit_timedatetime.now().strftime(%H-%M-%S)# 获取视频的帧率和分辨率 # PS这个参数是每秒有多少帧可以自己设定数值增大相当于视频加速fps cap.get(cv2.CAP_PROP_FPS) width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 使用XVID编解码器 fourcc cv2.VideoWriter_fourcc(*XVID) # 创建VideoWriter对象out cv2.VideoWriter(os.path.join(output_folder, f{video_name}-{edit_time}.avi), fourcc,fps, (width, height)) # 读取第一帧# cap.read()可以类比吃豆人吃掉就向前进下一口是新的帧ret,prev_framecap.read()# 循环读取视频的每一帧 while ret:# 读取下一帧ret,curr_framecap.read()# 如果读完则跳出循环if not ret:break# 检测两帧之间有没有变化即motion中有非零像素 motiondetect_motion(prev_frame,curr_frame,threshold)# 如果有变化则把后一帧写入VideoWriter对象if np.any(motion):out.write(curr_frame)# 读取框往后移动一帧继续循环prev_framecurr_frame# 释放视频文件out.release()cap.releaseoutput_folder rC:\Users\86171\Documents\Temp # 输出文件夹路径
sourceinput(source file: ) #需要处理的视频文件夹路径
#遍历获取需要处理的视频
videos[]
for root,dirs,files in os.walk(source):for file in files:file_path os.path.join(root,file) videos.append(file_path)
for video_path in videos:
# 调用函数保存包含运动的视频片段 save_motion_frames(video_path, output_folder)