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 numpy as np
imgarr = np.array(img)
for x in range(imgarr.shape[0]):
for y in range(imgarr.shape[1]):
if imgarr[x, y][0] < 150: # red value < 150
imgarr[x, y] = (0,0,0,255)
However, this is a slow loop and I am sure it can be optimized using some function such as numpy.where, but I am not able to fit it in this code. How can this be solved?