Python中使用cv2库将tile图像粘贴到目标图像指定偏移位置的实现方法
实现方案
在OpenCV中读取的图像以Numpy数组格式存储,直接通过数组切片赋值即可实现图像粘贴需求,你需要在注释位置补充以下代码:
# 数组切片顺序为[Y轴范围, X轴范围],对应你要求的Y=10、X=10为左上角起点 photo[10:10+h, 10:10+w] = tile
补全后的完整可运行代码如下:
import cv2 tile = cv2.imread('./tile_pattern.png') h,w = tile.shape[:2] photo = cv2.imread('./picture.png') # 粘贴tile到photo的指定位置 photo[10:10+h, 10:10+w] = tile cv2.imshow('image', photo) cv2.imwrite('./modified.png', photo) cv2.waitKey(0) cv2.destroyAllWindows()
注意事项
- 请确保两张图片的通道数一致,均为3通道彩色图像时可以直接赋值
- 粘贴区域不会超出
picture.png的范围:你使用的tile是16x16,目标位置左上角X=10、Y=10,右下角对应X=26、Y=26,小于128x128的画布尺寸,不会出现数组越界报错 - 如果你读取的tile包含alpha透明通道需要做特殊融合处理,无透明通道的场景直接用上述代码即可
内容的提问来源于stack exchange,提问作者J. Laderoute
相关产品推荐
相关产品推荐

