I have an RGBA image where I have to find if any pixel has red value < 150 and to replace such pixels to black. I am using following code for this:
import nu
For one channel image, we can do as follow
out_val = 0
gray = cv2.imread("colour.png",0)
gray[gray<value] = out_val
Use np.where with the mask of comparison against the threshold -
img = np.asarray(img)
imgarr = np.where(img[...,[0]]<150,(0,0,0,255),img)
We are using img[...,[0]]
to keep the number of dims as needed for broadcasted assignment with np.where
. So, another way would be to use img[...,0,None]<150
to get the mask that keeps dims.