Edit
Anyone who has a similar problem, I found another answer here with a great python solution that uses NumPy speed.
Please consider the following problem:
I have two images of the same size. One of them is a red square with various levels of opacity:

And the second, a blue square, is smaller than red, without transparency, but white, surrounding it.

I am using Python bindings for OpenCV for this project so far (after reading about watermarks here I have this:
redSquare = cv2.imread('redSquare.png', cv2.IMREAD_UNCHANGED)
(rH, rW) = redSquare.shape[:2]
blueSquare = cv2.imread('blueSquare.png')
(h, w) = blueSquare.shape[:2]
blueSquare = np.dstack([blueSquare, np.ones((h,w), dtype = 'uint8') * 255])
overlay = np.zeros((h,w,4), dtype = 'uint8')
overlay[0:rH, 0:rW] = redSquare
output = blueSquare .copy()
cv2.addWeighted(overlay, 0.5, output, 0.5, 0, output)
cv2.imwrite('imageAdded.png', output)
Which produces the following output:

However, the desired effect:

, , 0.5 , 1.0 , , , , .
- , , Python, ++, , .
.