在 opencv 中将颜色从黑色反转为白色 python
To invert colours from black to white in opencv python
我有一个条件,我想检测黑色背景的白线和白色背景的黑线。我使用了 bitwise_not 这样的操作:
cv2.bitwise_not(mask_black)
除非我给出这样的条件,否则它工作得很好:
if mask_black == cv2.bitwise_not(mask_black):
我收到一个错误
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我对使用条件有疑问,如果出现黑色背景则检测白线,如果出现白色背景则检测黑线
mask_black = cv2.inRange(hsv, low_black, high_black)
mask_not=cv2.bitwise_not(mask_black)
if mask_black==cv2.bitwise_and(mask_black, mask_not):
body
else:
body
这将返回上述错误
使用 cv2.bitwise_and(mask_black, mask_not)
其中 mask_not
是 cv2.bitwise_not(mask_black)
想法是用 cv2.countNonZero()
检查背景中的白色像素。我们设定了一个阈值,比如 50%。如果超过 50% 的背景是白色像素,则意味着我们正在寻找黑线。同样,如果大部分背景是黑色的,那么我们正在寻找白线。
import cv2
image = cv2.imread('1.png', 0)
w, h = image.shape[:2]
if cv2.countNonZero(image) > ((w*h)//2):
# Detect black line
...
else:
# Detect white line
...
要反转图像,您可以这样做
invert = cv2.bitwise_not(image) # OR
#invert = 255 - image
invert = cv2.bitwise_not(image)
一切正常。
我有一个条件,我想检测黑色背景的白线和白色背景的黑线。我使用了 bitwise_not 这样的操作:
cv2.bitwise_not(mask_black)
除非我给出这样的条件,否则它工作得很好:
if mask_black == cv2.bitwise_not(mask_black):
我收到一个错误
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我对使用条件有疑问,如果出现黑色背景则检测白线,如果出现白色背景则检测黑线
mask_black = cv2.inRange(hsv, low_black, high_black)
mask_not=cv2.bitwise_not(mask_black)
if mask_black==cv2.bitwise_and(mask_black, mask_not):
body
else:
body
这将返回上述错误
使用 cv2.bitwise_and(mask_black, mask_not)
其中 mask_not
是 cv2.bitwise_not(mask_black)
想法是用 cv2.countNonZero()
检查背景中的白色像素。我们设定了一个阈值,比如 50%。如果超过 50% 的背景是白色像素,则意味着我们正在寻找黑线。同样,如果大部分背景是黑色的,那么我们正在寻找白线。
import cv2
image = cv2.imread('1.png', 0)
w, h = image.shape[:2]
if cv2.countNonZero(image) > ((w*h)//2):
# Detect black line
...
else:
# Detect white line
...
要反转图像,您可以这样做
invert = cv2.bitwise_not(image) # OR
#invert = 255 - image
invert = cv2.bitwise_not(image)
一切正常。