Add reacts to black better than white color

I don’t get how this impacts heavily based on add(). See the example below:
Original image

difference after difference = cv2.add(previous, current)
image

So when I did white, See here:

which result as this:
image

How come there’s 5 types to compare the frame when I just want to detect the difference without any extra?

If this is duplicate topic, could you kindly share the link?

Thank you so much for your time too!

Sorry for multiple replies. This website won’t let me upload 6 pictures in one topic due to new member. I understand though

ouch. (it hurts already, reading this)

you have binary images here. boolean logic applies.
(rather think: a OR b, instead of ‘+’)

white+white=white;
white+black=white;
black+black=black

damn, ill go back and read doc again. thank you!

Is there any that just return the difference only? like

previous frame: [[30, 20, 10], [30, 20, 50]] 
current frame: [[30, 20, 10], [30, 20, 30]]

returns [30, 20, 30]