2015-11-07 86 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)