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
相关推荐
前端世界14 分钟前
用Python手写一个能识花的感知器模型——Iris分类实战详解少林and叔叔22 分钟前
基于yolov5.7.0的人工智能算法的下载、开发环境搭建(pycharm)与运行测试合作小小程序员小小店44 分钟前
旧版本附近停车场推荐系统demo,基于python+flask+协同推荐(基于用户信息推荐),开发语言python,数据库mysql,却道天凉_好个秋1 小时前
OpenCV(十四):绘制直线动能小子ohhh1 小时前
Langchain从零开始到应用落地案例[AI智能助手]【3】---使用Paddle-OCR识别优化可识别图片进行解析回答互联网中的一颗神经元1 小时前
小白python入门 - 9. Python 列表2 ——从基础操作到高级应用Serendipity_Carl2 小时前
爬虫数据清洗可视化案例之全球灾害数据B站计算机毕业设计之家2 小时前
计算机视觉:YOLO实现目标识别+目标跟踪技术 pyqt界面 OpenCV 计算机视觉 深度学习 计算机(建议收藏)✅AI小云3 小时前
【Python高级编程】类属性与类方法B站计算机毕业设计之家3 小时前
深度学习:YOLOv8人体行为动作识别检测系统 行为识别检测识系统 act-dataset数据集 pyqt5 机器学习✅