2015-04-28 84 views
3

我有一個圖像加載在我的代碼(很長,不必要的,不會在這裏發佈),我需要與skimage一起工作來檢測圖像中的斑點。然而,由於某些原因,我用過的所有圖片和嘗試都不起作用。將PIL圖像轉換爲skimage?

在上面的代碼中,圖像被PIL修改爲使我想要找到的對象只有白色(255,255,255),而其他所有像素都是黑色的。此代碼只需要識別這些位置。我已經嘗試了許多不同的東西來獲得這個工作(將它們轉換爲一個numpy數組,而不是將它們轉換爲numpy數組等)。

我遵循這些指令:http://scikit-image.org/docs/dev/auto_examples/plot_blob.html爲基礎,但它不是真的教程,更多的例子。

我認爲rgb2gray函數有問題,因爲它只返回0,而print(numpy.array(img))返回的值介於0和1之間,這表明信息的丟失是在調用rgb2gray時。

這裏,這似乎是有問題的代碼:

img_gray = rgb2gray(numpy.array(img)) # Convert to numpy array for skimage 
print(img_gray) 
print(numpy.array(img)) 
img_blobs = blob_doh(img_gray, threshold=0.01, max_sigma=500) 
print(img_blobs) 

我怎樣才能解決這個問題?

編輯:

這裏是什麼每個圖像,數組和列表打印:

[[ 0.   0.   0.   ..., 0.   0.   0.  ] #img_gray 
[ 0.   0.00392157 0.01568627 ..., 0.   0.   0.  ] 
[ 0.   0.01176471 0.05882353 ..., 0.   0.   0.  ] 
..., 
[ 1.   0.99607843 0.96078431 ..., 0.   0.   0.  ] 
[ 1.   1.   0.98039216 ..., 0.   0.   0.  ] 
[ 1.   1.   0.99215686 ..., 0.   0.   0.  ]] 
[[[ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0] 
    ..., 
    [ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0]] 

[[ 0 0 0] #img 
    [ 1 1 1] 
    [ 4 4 4] 
    ..., 
    [ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0]] 

[[ 0 0 0] #img 
    [ 3 3 3] 
    [ 15 15 15] 
    ..., 
    [ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0]] 

..., 
[[255 255 255] #img 
    [254 254 254] 
    [245 245 245] 
    ..., 
    [ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0]] 

[[255 255 255] #img 
    [255 255 255] 
    [250 250 250] 
    ..., 
    [ 0 0 0] #img 
    [ 0 0 0] 
    [ 0 0 0]] 

[[255 255 255] 
    [255 255 255] 
    [253 253 253] 
    ..., 
    [ 0 0 0] 
    [ 0 0 0] 
    [ 0 0 0]]] 
[] #img_blobs 
+0

你能發佈'max(img),min(img),img.dtype'嗎? – Zero

+0

嘗試在rgb2gray()之前創建np.array(img)並打印出前後所得到的結果(如Matthew建議檢查形狀和dtype)嘗試製作自己的小型測試數組(8,8,3)astype np.uint8)等,看看是否有任何具體的停止它的工作。 – paddyg

+1

max(img),min(img)和img.dtype在運行時都會引發錯誤(圖像類型不可迭代,dtype不是img的屬性) 在rgb2gray()之前創建數組時,編輯部分的帖子,它顯示了img_gray,img和img_blobs(檢測到的斑點)的測試打印輸出。 –

回答