import os
import cv2
import time
def on_mouse(event,x,y, flag, para):
global status_value, start_frame, end_frame, times
if event == cv2.EVENT_LBUTTONDOWN: # 鼠标左键点击
times += 1
status_value = not status_value
if status_value:
start_frame = frame_number
# print(f"Start frame: {start_frame}")
else:
split_flag = 'd' + str(int(times/2))
# print('split_flag: ', split_flag)
end_frame = frame_number
# print(f"End frame: {end_frame}")
extract_and_save_video(split_flag,para[0], para[1])
def extract_and_save_video(split_flag, folder, video_name):
now_time = time.time()
print('now_time:', now_time)
out = cv2.VideoWriter('{}_{}_{}.avi'.format(video_name, folder, split_flag), cv2.VideoWriter.fourcc(*'XVID'), fps, size)
print('start frame: {}'.format(start_frame))
print('end frame: {}'.format(end_frame))
for i in range(start_frame, end_frame + 1):
cap.set(cv2.CAP_PROP_POS_FRAMES, i)
ret, frame = cap.read()
if ret:
out.write(frame)
out.release()
print('video saved *********************')
cv2.waitKey(5000)
videos_folder = 'E:\\河南深丛信息科技\\datasets\\record_night'
action_folders = os.listdir(videos_folder)[:2]
for folder in action_folders:
video_folder = os.path.join(videos_folder, folder)
video_files = os.listdir(video_folder)
for video_file in video_files:
video_name = video_file.split('.mkv')[0]
video_file_path = os.path.join(video_folder, video_file)
print('video file path:', video_file_path)
cap = cv2.VideoCapture(video_file_path)
fps = cap.get(cv2.CAP_PROP_FPS)
print('fps: {}'.format(fps))
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print("frame_count:", frame_count)
status_value = 0
# 初始化变量
start_frame = None
end_frame = None
frame_number = 0
times = 0
event = 0
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
while True:
ret, frame = cap.read()
if not ret:
break
frame_number += 1
cv2.imshow('Video', frame)
cv2.setMouseCallback('Video', on_mouse, [folder, video_name])
if frame_number == 1:
cv2.waitKey(3000)
if cv2.waitKey(50) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
print(video_file + ' is done......\n')
cv2.waitKey(3000)
python opencv 持续点选开始帧,结束帧,切割视频成几个小段
Deepcong2024-06-25 23:27
相关推荐
梧桐树04292 小时前
python常用内建模块:collectionsDream_Snowar2 小时前
速通Python 第三节蓝天星空3 小时前
Python调用open ai接口jasmine s3 小时前
Pandas郭wes代码3 小时前
Cmd命令大全(万字详细版)leaf_leaves_leaf4 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本夜雨飘零14 小时前
基于Pytorch实现的说话人日志(说话人分离)404NooFound4 小时前
Python轻量级NoSQL数据库TinyDB天天要nx4 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法minstbe4 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python