Я получаю сообщение об ошибке:
UnboundLocalError: local variable 'locs' referenced before assignment
В других сообщениях я читал, что решением этой проблемы является использование global locs
после определения функции. Однако есть две функции def()
, в которых появляется locs =
. Я попытался вставить global locs
в одну из функций def и запустить, а также запустил код с global locs
, определенным в обеих функциях, но в каждом случае получал одну и ту же ошибку.
Трассировка:
Traceback (most recent call last):
File "model2.py", line 107, in <module>
main()
File "model2.py", line 94, in main
if not locs:
UnboundLocalError: local variable 'locs' referenced before assignment
Соответствующий код :
def extract_features(img_path):
# global locs #tried it here and got the same error
X_img = face_recognition.load_image_file(img_path)
locs = face_locations(X_img, number_of_times_to_upsample = N_UPSCLAE)
if len(locs) == 0:
return None, None
face_encodings = face_recognition.face_encodings(X_img, known_face_locations=locs)
return face_encodings, locs
def predict_one_image(img_path, clf, labels):
#global locs #tried it here with same error
face_encodings, locs = extract_features(img_path)
if not face_encodings:
return None, None
pred = pd.DataFrame(clf.predict_proba(face_encodings),
columns = labels)
pred = pred.loc[:, COLS]
return pred, locs
print("classifying images in {}".format(input_dir))
for fname in tqdm(os.listdir(input_dir)):
img_path = os.path.join(input_dir, fname)
try:
pred, locs = predict_one_image(img_path, clf, labels)
except:
print("Skipping {}".format(img_path))
if not locs:
continue
locs = \
pd.DataFrame(locs, columns = ['top', 'right', 'bottom', 'left'])
df = pd.concat([pred, locs], axis=1)
if __name__ == "__main__":
main()
Я вставляю global locs
в неправильном место