Python 将(1,1,1)和(0,0,0)之外的BGR通道转换为白色(255255)

Python 将(1,1,1)和(0,0,0)之外的BGR通道转换为白色(255255),python,image,opencv,Python,Image,Opencv,我有一个输入,我必须将不属于[0,0,0]和[1,1,1]的所有BGR通道转换为白色[255255] 我制作了一个可以转换除[0,0,0]以外的所有通道的代码 到白色 import numpy as np import cv2 for i in range (1,5): im = cv2.imread(str(i)+'.png') im[np.any(im != [0, 0, 0], axis=-1)] = [255,255,255] cv2.imwrite('a'+s

我有一个输入,我必须将不属于[0,0,0]和[1,1,1]的所有BGR通道转换为白色[255255]

我制作了一个可以转换除[0,0,0]以外的所有通道的代码 到白色

import numpy as np
import cv2

for i in range (1,5):
    im = cv2.imread(str(i)+'.png')
    im[np.any(im != [0, 0, 0], axis=-1)] = [255,255,255]
    cv2.imwrite('a'+str(i)+'.png', im)
我的目标是将除[0,0,0]和[1,1,1]之外的所有通道转换为白色

import numpy as np
import cv2

for i in range (1,5):
    im = cv2.imread(str(i)+'.png')
    im[np.any(im != [0, 0, 0] & im != [1,1,1], axis=-1)] = [255,255,255]
    cv2.imwrite('a'+str(i)+'.png', im)
我得到这个错误:

Traceback (most recent call last):
  File "convert.py", line 6, in <module>
    im[np.any(im != [0, 0, 0] & im != [1,1,1], axis=-1)] = [255,255,255]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
回溯(最近一次呼叫最后一次):
文件“convert.py”,第6行,在
im[np.any(im!=[0,0,0]&im!=[1,1,1],轴=-1)]=[255255]
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
如何通过更改上述代码将除[0,0,0]和[1,1,1]像素外的所有图像转换为白色[255255]?

&
的优先级高于
==
=,因此您需要括号来完成此操作:

 im[np.any((im != [0, 0, 0]) & (im != [1, 1, 1]), axis=-1)] = [255, 255, 255]