我正在尝试对灰度图像中的某些值进行阈值处理。到目前为止,我通过输入特定范围的数字已经成功,但我想取 50 到 150 之间的值并将它们乘以 1.2。我不确定如何访问向量中的数字,然后将其乘以 1.2。
myimg[myimg <= 50] = 0
myimg[myimg > 150 ] = 255
myimg[50<myimg<=150] = myimg * 1.2 #this line produces this error: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
最佳答案
而不是 50<myimg<=150
采用
(myimg>50) & (myimg<=150)
不要忘记
()
因为它不起作用。并且您需要在
=
的两侧具有相同大小的数组myimg[(myimg>50) & (myimg<=150)] = myimg[(myimg>50) & (myimg<=150)] * 1.2
或更短
myimg[(myimg>50) & (myimg<=150)] *= 1.2
示例代码
import numpy as np
import random
random.seed(0)
myimg = np.array([random.randint(0, 255) for x in range(10)], float)
print(myimg)
myimg[(myimg>50) & (myimg<=150)] = myimg[(myimg>50) & (myimg<=150)] * 1.2
#myimg[(myimg>50) & (myimg<=150)] = myimg * 1.2
print(myimg)
关于通过逻辑索引对 Python OpenCV 进行阈值处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61994807/