“功能”对象没有属性“扁平”

时间:2019-01-19 15:07:08

标签: python image-processing corner-detection

我正在尝试在Python中对某些图像执行角点检测。

我首先使用以下代码执行shi-tomasi算法:

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');

然后我从skimage应用feature.corner_peaks,但是当我调用函数时,它给了我一个错误“ 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的使用仍然不太流利,因此非常感谢您为解决此问题提供的任何帮助。

这是完整的错误:

Error

1 个答案:

答案 0 :(得分:0)

您已将名称corners_map重用于图像和功能。由于函数在python中是一流的,因此您可以将它们作为函数参数传递。在corners = feature.corner_peaks(corners_map)这行中,您所引用的corners_map是上面定义的函数。只需重命名功能,图像或同时重命名。