我有一个灰度图像和一个阈值。超过阈值的像素值应标记为蓝色或“+”号。标记灰度图像中的特定像素值
thresh_img = np.zeros((r,c))
thresh_img[:,:] = img[:,:]
thresh_img[thresh_img > 40] = 0
如何在python中做到这一点?
我有一个灰度图像和一个阈值。超过阈值的像素值应标记为蓝色或“+”号。标记灰度图像中的特定像素值
thresh_img = np.zeros((r,c))
thresh_img[:,:] = img[:,:]
thresh_img[thresh_img > 40] = 0
如何在python中做到这一点?
使用boolean indexing来标识值,然后使用numpy.nonzero
或numpy.where
来获得它们的索引。对于图像或矩阵,索引可以直接用作位置。然后使用matplotlib.plot(x, y, 'b+')
一种方法是使用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)
我相信这应该能够完成这项工作。你可以试试吗?
它显示错误'numpy.ndarray'对象没有属性'加载' –
看代码:'im = Image.open(“dead_parrot.jpg”)'。即时消息来自一张照片,它不应该与numpy有任何关系 –
你到目前为止尝试过什么?发布代码 –
是你真正拥有的吗?什么是np?和r和c? –
r,c是图像的行和列,img是必须被阈值化的图像,而np是numpy的缩略形式。 –