提交视频标注代码

V0.1.0
jiangxt 2 years ago
parent 530524ff53
commit aa28edf88f

@ -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)
Loading…
Cancel
Save