我正在尝试使用python和openCV
实现“LOG blob detector”。
我们的想法是创建10-15级LOG过滤器,将每个过滤器应用到我原始的灰度图像中,并将图像保存为height
x width
x numOfLevels
的数组。然后找到3D阵列上的局部最大值。
问题是我不确定如何将它们保存在数组中。
我尝试执行以下操作:
myImage = cv2.imread('butterfly.jpg')
gray_image = cv2.cvtColor(myImage, cv2.COLOR_BGR2GRAY)
sigma = 2
k = 2**(0.25)
std2 = float(sigma**2)
arr = []
for i in range(10):
filt_size = 2*np.ceil(3*sigma)+1
H = log_filt( filt_size, sigma)
H *= sigma**2
dst = cv2.filter2D(gray_image,-1,H)
arr.append(dst)
cv2.imshow('Gray', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
sigma = sigma * k
std2 = float(sigma**2)
plt.imshow(H,interpolation='nearest')
但是如果我尝试拍摄图像并使用cv2.imshow(arr[0])
,我会收到以下错误:
TypeError: Required argument 'mat' (pos 2) not found
我在这里做错了什么?
有没有更好的方法将它们保存在数组中?
也许以某种方式使用np.array
?