From aa28edf88ffc8bc91c7bf1da8ec4a6803a1d9917 Mon Sep 17 00:00:00 2001 From: jiangxt <1579525634@qq.com> Date: Wed, 9 Aug 2023 13:42:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=A7=86=E9=A2=91=E6=A0=87?= =?UTF-8?q?=E6=B3=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tool/video_label_2.py | 67 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tool/video_label_2.py diff --git a/tool/video_label_2.py b/tool/video_label_2.py new file mode 100644 index 0000000..543337d --- /dev/null +++ b/tool/video_label_2.py @@ -0,0 +1,67 @@ +import cv2 +import os +import os.path as osp + +#location = [左上角(x,y),右下角(x,y);截图的左上角(x,y),右下角(x,y)] +#information = [start_frame_o ,end_frame_o,idx_o,location_origin, start_frame_s,end_frame_s,idx_s,location_single] +def video_label(video_path,information,output_path): + """ + 给指定帧的图像,添加标注信息 + video_path:视频输入文件 + information:视频的信息包括原视频起始帧、索引以及对象坐标,截取后视频起始帧、索引以及对象坐标 + ouput_path:标注后视频保存地址 + + """ + start_frame_o ,end_frame_o,idx_o,location_origin, start_frame_s,end_frame_s,idx_s,location_single = information + + cap = cv2.VideoCapture(video_path) + frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + fps = int(cap.get(cv2.CAP_PROP_FPS)) + codec = cv2.VideoWriter_fourcc(*'XVID') + video_name = os.path.basename(video_path) + """labels取值取决于information中的信息""" + labels = idx_s + out = cv2.VideoWriter(osp.join(output_path,str(labels),video_name), codec, fps, (frame_width, frame_height)) + + if labels == 0: + labels = "Nodding!" + elif labels == 1: + labels = "no playing phone!" + elif labels == 2: + labels = "not sleep!" + elif labels == 3: + labels = "playing phone!" + elif labels == 4: + labels = "sleep!" + else: + pass + + while cap.isOpened(): + ret, frame = cap.read() + if not ret: + break + frame_idx = cap.get(cv2.CAP_PROP_POS_FRAMES) + if start_frame_o + start_frame_s <= frame_idx and frame_idx <= end_frame_o + end_frame_s: + x0_o, y0_o, x1_o, y1_o = int(location_origin[0]),int(location_origin[1]),int(location_origin[2]),int(location_origin[3]) + x0_s, y0_s, x1_s, y1_s = int(location_single[0]),int(location_single[1]),int(location_single[2]),int(location_single[3]) + cv2.rectangle(frame, (x0_o + x0_s, y0_o + y0_s), (x1_s + x0_o, y1_s + y0_o), (0, 255, 0), 2) + cv2.putText(frame, labels, (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 3, (0, 255, 0), 2) + out.write(frame) + cv2.namedWindow("Detection_results", cv2.WINDOW_AUTOSIZE) + + cv2.imshow("Detection_results", frame) + + if cv2.waitKey(10) & 0xFF == ord('q'): + break + + cap.release() + out.release() + cv2.destroyAllWindows() + +if __name__ == "__main__": + video_path = "C:/Users/Administrator/PycharmProjects/pythonProject1/data/0711-7_5.avi" + information = [0,201,0,[1140,722,1393,1197],0,10,0,[82,6,242,159]] + output_path = "C:/Users/Administrator/PycharmProjects/pythonProject1/output" + + video_label(video_path,information,output_path) \ No newline at end of file