ребята
Я попробовал модуль. Работает хорошо, но иногда не корректно обрезает изображение.
Код
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)
Что я должен сделать?