我正在尝试在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的使用仍然不太流利,因此非常感谢您为解决此问题提供的任何帮助。
这是完整的错误:
答案 0 :(得分:0)
您已将名称corners_map
重用于图像和功能。由于函数在python中是一流的,因此您可以将它们作为函数参数传递。在corners = feature.corner_peaks(corners_map)
这行中,您所引用的corners_map
是上面定义的函数。只需重命名功能,图像或同时重命名。