import numpy as np
import cv2
def paste_ROI_to_image(img1, img2, area):
image1 = img1.copy()
#改变尺寸
# y1, x1, y2, x2 = area
# img2 = cv2.resize(img2, (x2 - x1 + 1, y2 - y1 + 1)) # cv.resize(src, dsize=(width, height))
image1 = image1.astype(np.float) # 类型转换为np.float
img2 = img2.astype(np.float)
# alpha通道
# alpha_image1 = image1[y1:y2 + 1, x1:x2 + 1, 3] / 255.0 #特定区域
alpha_image1 = image1[:, :, 3] / 255.0 #整景影像
alpha_img2 = img2[:, :, 3] / 255.0
alpha = 1 - (1 - alpha_image1) * (1 - alpha_img2)
# BGR通道
for i in range(3):
# image1[y1:y2 + 1, x1:x2 + 1, i] = (image1[y1:y2 + 1, x1:x2 + 1, i] * alpha_image1 * (1 - alpha_img2) + img2[:, :, i] * alpha_img2) / alpha #放到特定位置
image1[:, :, i] = (image1[:, :, i] * alpha_image1 * (1 - alpha_img2) + img2[:, :, i] * alpha_img2) / alpha
image1[:, :, 3] = alpha * 255
image = image1.astype(np.uint8)
return image
if __name__ == "__main__":
image1 = cv2.imread("cut\\1.png", cv2.IMREAD_UNCHANGED)
image2 = cv2.imread("cut\\2.png", cv2.IMREAD_UNCHANGED)
image = paste_ROI_to_image(image1, image2, [0, 0, 255, 255])
cv2.imwrite("cut\\3.png", image)
Alpha融合 Python-OpenCV
最新推荐文章于 2024-09-19 13:43:29 发布
2112

被折叠的 条评论
为什么被折叠?



