合成背景图像

需求:

利用alpha通道将a.png的人物移动到bg.png的背景中:

思路

1.使用cv2导入rgba通道的图片,获取alpha通道
2.a.png的alpha中只有255的值的地方被留下,其他地方全部填充为背景
3.使用cv2的imshow进行展示

代码:

# -*- coding:utf8 -*-
import cv2 as cv
import numpy as np
import datetime
create_time = datetime.datetime.now()
print("create_time:    " + str(create_time))
imgA = cv.imread('images/a.png', cv.IMREAD_UNCHANGED)
imgSrcBg = cv.imread('images/bg.png', cv.IMREAD_UNCHANGED)


rows, cols, channels = imgA.shape
B, G, R, A = cv.split(imgA)


# cv.imshow('img',imgAlpha)

# # 不包含alpha通道
imgA = cv.imread('images/a.png')

imgMix = np.zeros([rows, cols, 3], dtype='uint8')
for i in range(rows):
    for j in range(cols):
        alpha = A[i][j] / 255
        beta = 1 - alpha
        # print (alpha)
        for k in range(3):
            temp = int(imgA[i, j, k]*alpha + imgSrcBg[i, j, k]*beta)
            if temp > 255:
                imgMix[i, j, 0] = 255
            elif temp < 0:
                imgMix[i, j, 0] = 0
            else:
                imgMix[i, j, k] = temp
# #
cv.imshow('image', imgMix)
finish_time = datetime.datetime.now()
print("finish_time:    " + str(finish_time))
cv.waitKey(0)
cv.destroyAllWindows()

代码运行时间特别长(近半分钟):
在这里插入图片描述
效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值