2015-11-07 91 views
0

我试图实现使用Python和openCV的“LOG斑点探测器”。 的想法是创建10-15级别的日志过滤器,他们每个人都适用于我原来的灰度图像并保存图像尺寸height X width X numOfLevels的数组,然后找到3D阵列上的局部最大值。我不知道如何将这些保存在数组中。Python中像阵列 OpenCV的 numpy的

我试着做到以下几点:

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不知何故?

+0

请总是包括完整的错误追溯,而不仅仅是错误消息。 – cel

回答

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]) 

见OpenCV的2.43.0文件imshow

cv2.imshow(winname, mat)