2017-07-21 52 views
0

我有一個灰度圖像和一個閾值。超過閾值的像素值應標記爲藍色或「+」號。標記灰度圖像中的特定像素值

thresh_img = np.zeros((r,c)) 
thresh_img[:,:] = img[:,:] 
thresh_img[thresh_img > 40] = 0 

如何在python中做到這一點?

+0

你到目前爲止嘗試過什麼?發佈代碼 –

+0

是你真正擁有的嗎?什麼是np?和r和c? –

+0

r,c是圖像的行和列,img是必須被閾值化的圖像,而np是numpy的縮略形式。 –

回答

1

使用boolean indexing來標識值,然後使用numpy.nonzeronumpy.where來獲得它們的索引。對於圖像或矩陣,索引可以直接用作位置。然後使用matplotlib.plot(x, y, 'b+')

0

一種方法是使用PIL庫(http://www.pythonware.com/products/pil/)。 首先,創建一個數組來存儲值。然後你打開圖像並使用for循環,你遍歷它所有的像素。根據像素的顏色,你存儲一個'+'或其他東西(你不指定什麼,所以我認爲它是顏色,可以存儲爲單個數字,因爲灰度具有相似的RG和B值) 。所以,我可能會這樣做:

from PIL import Image 
cols = [] 
im = Image.open("dead_parrot.jpg") #Can be many different formats. 
pix = im.load() 
w = im.size[0] 
h = im.size[1] 
for i in range(w): 
    row = [] 
    for j in range(h): 
     red = pix[i,j][0] 
     if red > threshold: 
      row.append('+') 
     else: 
      row.append(str(red)) 
    cols.append(row) 
print(cols) 

我相信這應該能夠完成這項工作。你可以試試嗎?

+0

它顯示錯誤'numpy.ndarray'對象沒有屬性'加載' –

+0

看代碼:'im = Image.open(「dead_parrot.jpg」)'。即時消息來自一張照片,它不應該與numpy有任何關係 –