将图像中的像素值编辑为 numpy 数组

我正在阅读这样的图像:


img = np.array(Image.open(test_dir + image_name))

我想要做的是在数组中找到一个值高(250 或更多)的区域并将其减少 10:


rows = img.shape[0]

cols = img.shape[1]

pixel = []

for x in range(0,rows):

    for y in range(0, cols):

        if x >= 122 and x <= 160 and y >= 34  and y <= 71:

            if img[x,y]>= 250:

                img[x,y] = img[x,y] -10

                pixel.append(img[x,y])

所以我根据未更改的图像查看的区域应该是一个从 (122, 34) 到 (160,71) 的框,并且它应该有一些超过 250 的像素,但不知何故,当我运行此代码时,我最终什么也没在像素列表中


慕村225694
浏览 149回答 3
3回答

ibeautiful

对于更紧凑的解决方案,您可以尝试roi = img[122:161, 34:72]pixel = roi[roi >= 250]roi[roi >= 250] -= 10

暮色呼如

如果您的图像是灰度的,则可以这样做。inds = np.where(img>=250)inds = inds[(inds.T[0]>=122)&(inds.T[0]<=160)&(inds.T[1]>=34)&(inds.T[1]<=71)]img[inds]-=10
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python