我正在努力改变 灰度图像的亮度。 但是,我在使用numpy数组时遇到问题 我试图在每个像素值上加100 并在值超过255时将其设置为255
import numpy as np
import matplotlib.pyplot as plt
from scipy import misc
for i in range(0, img.shape[0]):
for j in range(0, img.shape[1]):
im2[i,j] = img[i,j] + 100
if im2[i,j] > 255:
im2[i,j] = 255
plt.imshow(im2, cmap = 'gray')
plt.show()
这些是代码,我收到一条错误消息
if im2[i,j] > 255:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以简单地使用numpy clip功能:
im2 = np.clip(img + 100, 0, 255)
说明:
第一个参数是要剪辑的数组,在您的情况下是img
,每个元素都添加了100。第二个参数是minnimum值,应为0.第三个参数是最大值,在您的情况下为255。
答案 1 :(得分:0)
当您考虑错误The truth value of an array with more than one element is ambiguous
时,这似乎是合乎逻辑的。
你试图说我的阵列(说[1,2,3])是否优于255?它的长度是否超过255?你想知道第一个元素是否优越吗?第二 ?整个阵列的总和?所有整个数组的根平方?
如果我正确地按照您的评论,您想要做的是:
for idx in range(len(im2[i, j])):
if im2[i, j][idx] > 255:
im2[i, j][idx] = 255
答案 2 :(得分:0)
如果需要,可以通过以下方式简化代码:
im2 = (np.asarray (img) + 100)
im2[im2>255] = 255
第一行会将img
转换为numpy array
(如果img
为列表)并在每个元素中添加255。
如果im2
大于255,那么该行将替换255的值。