import cv2
import numpy as np
import random
# 讀取兩個圖像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
# 將image1轉換為灰度圖像
gray_image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
# 創建掩碼,黑色部分為0,非黑色部分為255
_, mask = cv2.threshold(gray_image1, 1, 255, cv2.THRESH_BINARY)
# 反轉掩碼
mask_inv = cv2.bitwise_not(mask)
# 獲取圖像1中有效區域的高度和寬度
height1, width1, _ = image1.shape
# 獲取圖像2的高度和寬度
height2, width2, _ = image2.shape
# 生成隨機位置
random_y = random.randint(0, height2 - height1)
random_x = random.randint(0, width2 - width1)
# 創建ROI(Region of Interest),確保不超出圖像2的范圍
roi = image2[random_y:random_y + height1, random_x:random_x + width1]
# 創建ROI的反向掩碼
roi_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
# 獲取圖像1中有效區域的前景
fg = cv2.bitwise_and(image1, image1, mask=mask)
# 合并前景和背景
dst = cv2.add(roi_bg, fg)
# 將合并后的圖像放回圖像2的相應位置
image2[random_y:random_y + height1, random_x:random_x + width1] = dst
# 顯示結果
cv2.imshow('Merged Image', image2)
cv2.waitKey(0)
cv2.destroyAllWindows()
?