Я пытаюсь сохранить несколько изображений с массивами, которые содержат 68 координат ориентира лица из изображений. Я использую .format в конце имени массива, однако, когда я запускаю программу в терминале, она возвращается с объектом, который нельзя вызвать.
Я использую raspbian для raspberrypi3 и использую эту программу для распознавания эмоций, используя ориентиры на лице с OpenCV, dlib и python. Код, который я использую, - это модифицированный и вставленный код со страниц распознавания лиц pyimagesearch, а также часть моего собственного кода. Я попытался поместить строку .format в строку 43, однако она вернулась с
TypeError: 'numpy.ndarray' object is not callable
#import the necessary packages
from imutils import face_utils
from imutils import paths
import numpy as np
import argparse
import imutils
import dlib
import cv2
import os
#construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--shape-predictor", required=True,
help="path to facial landmark predictor")
ap.add_argument("-i", "--image", required=True,
help="path to input image")
args = vars(ap.parse_args())
#grab path to images that are being converted
imagePaths = list(paths.list_images(args["image"]))
for (i, imagePath) in enumerate(imagePaths):
print("[INFO] processing image {}/{}".format(i + 1,
len(imagePaths)))
#load the input image, and convert it to grayscale
image = cv2.imread(imagePath)
image = imutils.resize(image, width=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#detect faces in the grayscale
rects = detector(gray, 1)
#loop over the face detections
for (i, rect) in enumerate(rects):
#determine the facial landmarks for the face region, then
#convert the facial landmark (x, y)-coordinates to a NumPy
#array
shape = predictor(gray, rect)
shape = face_utils.shape_to_np(shape("{}".format[i] for i in
imagePaths))
#save the numpy array
for (i, imagePath) in enumerate(imagePaths):
np.savez("arrays.npz", shape)
shape_npz = np.load("arrays.npz")
d = dict(zip(("data1{}".format(k) for k in shape_npz),
(shape_npz[k] for k in shape_npz)))
Когда я запустил код в терминале, он выдал
TypeError: 'dlib.full_object_detection' object is not callable
Однако, когда я запустил вызываемый файл, он вернулся с
True
Я ожидал, что результат будет
[INFO] processing image 1/4
[INFO] processing image 2/4
[INFO] processing image 3/4
[INFO] processing image 4/4
с массивом каждой картинки между ними.
Как я могу это исправить, чтобы он сохранил каждый массив numpy в файл array.npz?