如何解决在大图中随机叠加小图时旧小图残留的问题?
问题修复方案
你的代码核心问题是直接操作了markup_images中的原始大图对象,每次修改都会永久改变原始数据,导致后续调用时自然叠加之前的小图。
修复方法
每次调用函数时,先创建原始大图的副本,在副本上进行小图粘贴操作,这样原始大图始终保持初始状态,每次生成的都是仅包含单张小图的结果。
修改后的代码:
import numpy as np def mask_generation(blob_index, image_index): # 创建原始大图的深拷贝,避免修改原数据 experimental_image = np.copy(markup_images[image_index]) h, w = cropped_images[blob_index].shape[:2] # 修正索引方向:x对应宽度维度,y对应高度维度 x = np.random.randint(experimental_image.shape[1] - w) y = np.random.randint(experimental_image.shape[0] - h) experimental_image[y:y+h, x:x+w] = cropped_images[blob_index] return experimental_image
额外说明
原代码中x和y的随机取值逻辑存在索引方向错误:
experimental_image.shape[0]是图像的高度(y轴范围),shape[1]是宽度(x轴范围)- 调整后
x从宽度范围内取随机值,y从高度范围内取,能确保小图完全落在大图内,避免索引越界问题。
内容的提问来源于stack exchange,提问作者Dripgift
相关产品推荐
相关产品推荐

