У объекта 'function' нет атрибута 'flat' - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь выполнить определение угла на некоторых изображениях в 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: объект 'функции' не имеет атрибута '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, поэтому любая помощь в решении этой проблемы очень ценится.

Это полная ошибка:

Error

1 Ответ

0 голосов
/ 19 января 2019

Вы повторно использовали имя corners_map для изображения, а также для функции.Поскольку функции в Python являются первоклассными, вы можете передавать их как аргументы функции.В этой строке corners = feature.corner_peaks(corners_map), ссылка corners_map, на которую вы ссылаетесь, является определенной выше функцией.Просто переименуйте функцию, изображение или оба.

...