Я перебираю кадры в видеоклипе и запускаю объект трекера OpenCV для каждого кадра. Вся процедура отслеживания должна выполняться несколько раз - каждый раз при изменении размера видео до новой ширины кадра.
Процедура выполняется правильно с первого раза. Как только начинается вторая итерация (те же шаги отслеживания, что и раньше, но с изменением размера кадра), OpenCV выдает эту ошибку:
Ошибка: OpenCV (4.1.0) / Users / travis / build / skvark / opencv-python / opencv / modules / video / src / lkpyramid.cpp: 1363: ошибка: (-215: утверждение не выполнено) prevPyr [level * lvlStep1] .size () == nextPyr [level * lvlStep2] .size () в функции'calc'
Весь сценарий слишком длинный для размещения здесь, поэтому вот суть:
widths = [0, 1280, 640]
for width in widths:
# call tracking function
run_track(width)
def run_track(width):
# Initialize the video stream and pointer to output video file
vs = cv2.VideoCapture(video_file)
# run until no more frames
while True:
grabbed, frame = vs.read()
if resize is not 0:
frame = imutils.resize(frame, width)
if tracker is None:
tracker = tracker_inst
tracker.init(frame, tuple(gt_bb))
if tracker is not None:
tracking, trk_bb = tracker.update(frame)
# do custom tracking procedure, save frames, etc
Независимо от того, что является первым значением в widths
, оноработает нормально с первого раза. Как только итерация начинается для второго значения в widths
, выдается ошибка. Это ссылка на проблему? Даже если я добавлю frame = None
в начале объявления функции, выдается ошибка. Есть идеи?