![373d5756ada69304f18ef09d72d3a039.png](https://i-blog.csdnimg.cn/blog_migrate/85988ed9a3d9f8997da090ccf9f91172.jpeg)
一、图像通道介绍
图像在计算机中是以数字矩阵形式存储的,我们常见的图像是JPEG格式,后缀为JPEG或者JPG,此种图像对应的矩阵有三个通道,代表着每个像素有R红,G绿,B蓝三个颜色分量。另一种常见的无损压缩图像格式为PNG,不同于JPEG,此格式的图像在计算机中有四个通道,第四个通道Alpha代表透明度。本文要做的就是将一个PNG图像的前景(RGB通道部分叠加到另一个背景图像上,类似于PS的抠图操作)
二、如何利用OpenCV实现?
下面来看下代码实现部分,首先是python的实现:
import numpy as np
import cv2
foreGroundImage = cv2.imread("foreGroundAsset.png",-1)
## 先将通道分离
b,g,r,a = cv2.split(foreGroundImage)
#得到PNG图像前景部分,在这个图片中就是除去Alpha通道的部分
foreground = cv2.merge((b,g,r))
#得到PNG图像的alpha通道,即alpha掩模
alpha = cv2.merge((a,a,a))
background = cv2.imread("backGround.jpg")
#因为下面要进行乘法运算故将数据类型设