2017-07-21 54 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有任何关系 –