通过逻辑索引对 Python OpenCV 进行阈值处理

标签 python opencv image-thresholding

我正在尝试对灰度图像中的某些值进行阈值处理。到目前为止,我通过输入特定范围的数字已经成功,但我想取 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/

相关文章:

python - pyplot 不导入,抛出错误

python - SQLITE创建语句错误

python - 在终端上使用 ppa 命令时出现问题

python - cv2.findContours 函数在两个版本中均无效

python - Sublime 布局分为 3 个面板,以创建自定义布局

c++ - 不能使用 OpenCV 命名空间

c - 使用 OpenCV 检测小圆圈(图像质量差)

c++ - 加快 OpenCV 的输入响应速度

python - OpenCVadaptiveThreshold函数返回的图像中的每个像素的值为255

python - 适应不同雷电条件的OpenCV阈值