У объекта 'function' нет атрибута 'flat'
Я пытаюсь выполнить определение угла на некоторых изображениях в Python.
Сначала я выполняю алгоритм Ши-Томаси с помощью следующего кода:
def corners_map(image):
# Convert to grayscale and convert the image to float
RGB = img_as_float(color.rgb2gray(image))
# Apply shi-tomasi algorithm
corners_map = feature.corner_shi_tomasi(RGB, 10)
# Plot results
plt.figure(figsize=(12,6))
plt.subplot(121)
plt.imshow(RGB, cmap=cm.gist_gray)
plt.title('Original image')
plt.subplot(122)
plt.imshow(corners_map, cmap=cm.jet)
plt.colorbar(orientation='horizontal')
plt.title('Corners map');
Затем я применяю feature.corner_peaks из skimage, но когда я вызываю функцию, она выдает мне ошибку "AttributeError: у объекта 'function' нет атрибута 'flat'". Ниже приведен код:
def corner_peaks(image):
# Apply corner peak detection algorithm
corners = feature.corner_peaks(corners_map)
#Plot results
plt.figure(figsize=(12,6))
plt.subplot(121)
plt.imshow(RGB, cmap=cm.gist_gray)
plt.title('Original image')
plt.figure(figsize=(12,6))
plt.subplot(122)
plt.imshow(RGBimg, cmap=cm.gist_gray)
plt.scatter(corners[:,1], corners[:,0], s=30)
plt.title('skimage.feature.corner_peaks result')
corner_peaks(image1)
Я до сих пор не очень хорошо владею Python, поэтому любая помощь в решении этой проблемы очень ценится.
Это полная ошибка:
1 ответ
Вы повторно использовали имя corners_map
для изображения, а также для функции. Поскольку функции в Python являются первоклассными, вы можете передавать их как аргументы функции. На этой линии corners = feature.corner_peaks(corners_map)
, corners_map
Вы ссылаетесь на определенную выше функцию. Просто переименуйте функцию, изображение или оба.