Я извлекаю встраивание лица в изображения лиц и затем должен показать его. Для этого я использую следующую функцию:
def show_orignal_images(pixels):
# Displaying Orignal Images
fig, axes = plt.subplots(6, 10, figsize=(11, 7), subplot_kw={'xticks':[], 'yticks':[]})
for p, ax in enumerate(axes.flat):
ax.imshow(np.array(pixels)[p].reshape(64, 64), cmap='gray')
plt.show()
Ниже показано, как я извлекаю встраивание и строю его:
for (z, imagePath) in enumerate(imagePaths):
name = imagePath.split(os.path.sep)[-2]
print("[INFO] processing image {}/{}, name {}".format(z + 1, len(imagePaths), imagePath))
image = cv2.imread(imagePath)
image = imutils.resize(image, width=600)
(h, w) = image.shape[:2]
imageBlob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0), swapRB=False, crop=False)
detector.setInput(imageBlob)
detections = detector.forward()
for i in range(0, detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype("int")
face = image[startY:endY, startX:endX]
(fH, fW) = face.shape[:2]
faceBlob = cv2.dnn.blobFromImage(face, 1.0 / 255, (96, 96), (0, 0, 0), swapRB=True, crop=False)
embedder.setInput(faceBlob)
vec = embedder.forward()
knownNames.append(name)
knownEmbeddings.append(vec.flatten())
targets = knownNames
pixels = knownEmbeddings
show_orignal_images(pixels)
, но выдает ошибку:
ValueError: cannot reshape array of size 128 into shape (64,64)
Как мне это решить. Пожалуйста помоги. Спасибо