在python \ openCV \ numpy中创建一个图像数组

时间:2015-11-07 15:57:28

标签: arrays python-2.7 opencv numpy

我正在尝试使用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

1 个答案:

答案 0 :(得分:2)

您的错误:

cv2.imshow(arr[0]) I get the following error: TypeError: Required argument 'mat' (pos 2) not found

是因为您将图像(arr[0])作为第一个参数传递,但是您应该将其作为第二个参数传递:

cv2.imshow('WindowName', arr[0])

请参阅imshow的OpenCV 2.43.0文档:

cv2.imshow(winname, mat)