OpenCV
3.4.20-dev
Open Source Computer Vision
|
You can add two images with the OpenCV function, cv.add(), or simply by the numpy operation res = img1 + img2. Both images should be of same depth and type, or the second image can just be a scalar value.
For example, consider the below sample:
This will be more visible when you add two images. Stick with OpenCV functions, because they will provide a better result.
This is also image addition, but different weights are given to images in order to give a feeling of blending or transparency. Images are added as per the equation below:
\[g(x) = (1 - \alpha)f_{0}(x) + \alpha f_{1}(x)\]
By varying \(\alpha\) from \(0 \rightarrow 1\), you can perform a cool transition between one image to another.
Here I took two images to blend together. The first image is given a weight of 0.7 and the second image is given 0.3. cv.addWeighted() applies the following equation to the image:
\[dst = \alpha \cdot img1 + \beta \cdot img2 + \gamma\]
Here \(\gamma\) is taken as zero.
Check the result below:
This includes the bitwise AND, OR, NOT, and XOR operations. They will be highly useful while extracting any part of the image (as we will see in coming chapters), defining and working with non-rectangular ROI's, and etc. Below we will see an example of how to change a particular region of an image.
I want to put the OpenCV logo above an image. If I add two images, it will change the color. If I blend them, I get a transparent effect. But I want it to be opaque. If it was a rectangular region, I could use ROI as we did in the last chapter. But the OpenCV logo is a not a rectangular shape. So you can do it with bitwise operations as shown below:
See the result below. Left image shows the mask we created. Right image shows the final result. For more understanding, display all the intermediate images in the above code, especially img1_bg and img2_fg.