Это код
import cv2
import os
import math
import requests
tom_xml = requests.get('https://raw.githubusercontent.com/hako/dissertation/master/haar_cascades/tom.xml')
f = open('/content/tom.xml','w')
f.write(tom_xml.text)
def video_to_frames(video, frame_folder):
cam = cv2.VideoCapture("/content/Dataset/" + video)
frame_rate = cam.get(5)
try:
if not os.path.exists('/content/' + frame_folder):
os.makedirs('/content/' + frame_folder)
except OSError:
print ('Error: Creating directory of data')
currentframe = 0
while cam.isOpened():
frame_id = cam.get(1)
ret,frame = cam.read()
if (frame_id % math.floor(frame_rate)) == 0:
name = '/content/' + frame_folder +'/frame' + str(currentframe) + '.jpg'
faceCascade = cv2.CascadeClassifier('/content/tom.xml')
faces = faceCascade.detectMultiScale(
frame,
scaleFactor=1.10,
minNeighbors=20,
minSize=(48, 48),
flags=cv2.CASCADE_SCALE_IMAGE
)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
roi_color = frame[y:y + h, x:x + w]
cv2.imwrite('/content/' + frame_folder +'/frame{:d}.jpg'.format(currentframe), roi_color)
currentframe += 1
if ret != True:
cam.release()
break
cv2.destroyAllWindows()
print('Completed')
Код отлично работает с первым видеофайлом video_to_frames ('Train Tom and jerry.mp4', 'data_train') Completed
Однако, он выбрасывает UnboundLocalError: локальная переменная 'roi_color', на которую ссылается перед присваиванием для второго видеофайла
video_to_frames('Test Tom and Jerry.mp4', 'data_test')
UnboundLocalError Traceback (most recent call last)
<ipython-input-5-ef0eb71a5dba> in <module>()
----> 1 video_to_frames('Test Tom and Jerry.mp4', 'data_test')
<ipython-input-4-714f5fe4b084> in video_to_frames(video, frame_folder)
31 roi_color = frame[y:y + h, x:x + w]
32
---> 33 cv2.imwrite('/content/' + frame_folder +'/frame{:d}.jpg'.format(currentframe), roi_color)
34 currentframe += 1
35
UnboundLocalError: local variable 'roi_color' referenced before assignment
Возможно, есть / являются глупой ошибкой / ошибками. Любая помощь будет высоко оценена, спасибо заранее