ValueError: невозможно преобразовать массив размером 128 в форму (64,64) - PullRequest
0 голосов
/ 17 апреля 2020

Я извлекаю встраивание лица в изображения лиц и затем должен показать его. Для этого я использую следующую функцию:

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)

Как мне это решить. Пожалуйста помоги. Спасибо

1 Ответ

0 голосов
/ 17 апреля 2020

вы не можете изменить 128 в (64,64). Потому что 64x64=4096. Но вы можете преобразовать данные в форму (i,j) with i*j=128, например (2,64) или (8, 16)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...