该教程适合做个十几秒的demo,先通过opencv读取视频流并将图片每帧都保存下来,然后在图片上通过labelImg软件进行画框(打标签),并将生成的xml文件保存到同一目录下。
#! encoding: UTF-8
import os
from os import path
import xml.etree.cElementTree as ET
import cv2
videos = '1.mp4' # 视频路径
cap = cv2.VideoCapture(videos)
count = 0
while True:
_, frame = cap.read()
cv2.imwrite(str(count) + '.jpg', frame)
xml_file = os.path.join(str(count)+'.xml')
if os.path.exists(xml_file):
tree = ET.parse(xml_file)
root = tree.getroot()
object_set = root.findall('object')
object_bbox = list()
for Object in object_set:
bbox = Object.find('bndbox')
x1 = int(bbox.find('xmin').text.split('.')[0])
y1 = int(bbox.find('ymin').text.split('.')[0])
x2 = int(bbox.find('xmax').text.split('.')[0])
y2 = int(bbox.find('ymax').text.split('.')[0])
obj_bbox = [x1, y1, x2, y2]
cv2.rectangle(frame, (x1, y2), (x2, y1), (0, 0, 255), 2)
frame = frame
else:
frame = frame
cv2.imshow('res', frame)
c = cv2.waitKey(5) & 0xff
if c == 27:
cap.release()
break
count += 1