PythonOpenCV随机粘贴图像

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()

相关推荐
风象南26 分钟前
普通人用AI加持赚到的第一个100块
人工智能·后端
牛奶1 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶1 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
罗西的思考4 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
冬奇Lab4 小时前
OpenClaw 源码精读(2):Channel & Routing——一条消息如何找到它的 Agent?
人工智能·开源·源码阅读
冬奇Lab4 小时前
一天一个开源项目(第38篇):Claude Code Telegram - 用 Telegram 远程用 Claude Code,随时随地聊项目
人工智能·开源·资讯
格砸6 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
可观测性用观测云6 小时前
可观测性 4.0:教系统如何思考
人工智能
sunny8656 小时前
Claude Code 跨会话上下文恢复:从 8 次纠正到 0 次的工程实践
人工智能·开源·github
小笼包包仔7 小时前
OpenClaw 多Agent软件开发最佳实践指南
人工智能