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
相关推荐
一点.点17 分钟前
李沐动手深度学习(pycharm中运行笔记)——04.数据预处理一点.点20 分钟前
李沐动手深度学习(pycharm中运行笔记)——07.自动求导EQ-雪梨蛋花汤1 小时前
【Part 2安卓原生360°VR播放器开发实战】第二节|基于等距圆柱投影方式实现全景视频渲染大霸王龙1 小时前
Python对比两张CAD图并标记差异的解决方案萧鼎2 小时前
PDFMathTranslate:让数学公式在PDF翻译中不再痛苦@_猿来如此2 小时前
Django 实现电影推荐系统:从搭建到功能完善(附源码)Python×CATIA工业智造2 小时前
爬虫技术入门:基本原理、数据抓取与动态页面处理fmdpenny3 小时前
用python写一个相机选型的简易程序敲敲敲-敲代码3 小时前
【PyCharm- Python- ArcGIS】:安装一个和 ArcGIS 不冲突的独立 Python让PyCharm 使用 (解决全过程记录)猿榜编程3 小时前
python基础-requests结合AI实现自动化数据抓取