cv2 circle valueError - PullRequest
       5

cv2 circle valueError

0 голосов
/ 06 февраля 2020

ребята

Я попробовал модуль. Работает хорошо, но иногда не корректно обрезает изображение.

Код

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    hsv_img[:, :, 1] = 255
    hsv_img[:, :, 2] = 255
    bgr_img = cv2.cvtColor(hsv_img, cv2.COLOR_HSV2BGR)
    gray_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)

    circles = cv2.HoughCircles(gray_img, cv2.HOUGH_GRADIENT, 1, gray_img.shape[0] / 8, param1=100, param2=30, minRadius=18, maxRadius=30)
    temp_list = []
    img_index = 1
    if circles is not None:
        circles = np.round(circles[0, :]).astype("int")
        for (x, y, r) in circles:

            cropped = gray_img[max(0, int(y - 60 / 2)):int(y + 60 / 2), max(0, int(x - 60 / 2)):int(x + 60 / 2)].astype(np.float32)

            temp_list.append((cropped, (x, y)))
            img_index += 1

    temp_list = sorted(temp_list, key= lambda x: x[1][0])
    return_list = []
    for image in temp_list:
        return_list.append(image[0])

    return return_list

def images2tensor(self, img_list):
    """
    Creates a tf compliant tensor by stacking images in img_list
    :param img_list:
    :return: np.array of shape [1, 60, 60, 1]
    """
    return np.vstack([np.reshape(x, [1, 60, 60, 1]) for x in img_list])

И возвращает ValueError,

ValueError: не может изменить массив размера 3480 в форму (1,60,60,1)

Что я должен сделать?

...