To do this in real time you would have to do it through pygame. Check out the docs to see what is available. looking quickly I didn’t see anything built in that does this manipulation. This leaves the option of going through the image pixel by pixel, similar to the PIL example you mentioned, and this would probably be real slow.
Another thing to try is overlaying images of solid colors with alpha channel to create a filter. more of a colorizer… or use alpha channels to mix together several of the same image with different color filters already applied. but alpha channel stuff can also be slow, so it will be a balancing act.