gpt4 book ai didi

python - Numpy np.any 范围或阈值

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:02 25 4
gpt4 key购买 nike

我正在使用 python、OpenCV 和 Numpy。我的目标是找到所有白色像素并将其变为红色,然后关闭其他所有像素或将其变为白色。我的代码:

 import numpy as np
import cv2
import matplotlib.pyplot as plt

# Read mask
image = cv2.imread("path to my image")

any_white = np.any(image == [255,255,255], axis = -1)

image[any_white]=[255,0,0]
plt.imshow(image)
plt.show()

cv2.imwrite('result.png',image)

问题 1:针对任何 [255,255,255] 都找不到,白人,我开始找到任何 [244,244,244][243,243,243] 等等。有没有办法设置白色范围,可能从 [255,255,255][230,230,230]

enter image description here

问题 2:很明显,在 python 中使用 plt.imshow(image)plt.show(),结果显示为红色,但是当我使用 cv2.imwrite('result.png',image) 保存,是蓝色的。查看结果图片。

最佳答案

问题 1:您可以创建一个 mask 并将红色 channel 设置为 False,以便在您只想定位白色像素时将值保持在 255

mask_bg = (image == [255, 255, 255])
mask_bg[:, :, 0] = False # set red channel mask to false (leave 255 value)

image[mask_bg] = 0 # set all white pixels to [255, 0, 0]

如果你想找到一个范围内的所有值,你可以使用 cv2.inRange:

mask = cv2.inRange(image, (230, 230, 230), (255, 255,255))

问题 2:OpenCV 默认使用 BGR 而不是 RGB,您可以使用以下方法将 BGR 转换为 RGB:

new_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.imshow('BGR Image', new_image )

请记住,如果您使用 OpenCV 打开图像,它将是 BGR,因此请在操作 channel 之前转换它。

关于python - Numpy np.any 范围或阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com