我正在阅读这样的图像: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 的像素,但不知何故,当我运行此代码时,我最终什么也没在像素列表中
3 回答

ibeautiful
TA贡献1993条经验 获得超5个赞
对于更紧凑的解决方案,您可以尝试
roi = img[122:161, 34:72]
pixel = roi[roi >= 250]
roi[roi >= 250] -= 10

暮色呼如
TA贡献1853条经验 获得超9个赞
如果您的图像是灰度的,则可以这样做。
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
添加回答
举报
0/150
提交
取消