如何将小尺寸Numpy图像数组居中覆盖到黑色背景数组上?
实现小图像居中覆盖到黑色背景数组的方法
要将小尺寸图像数组居中覆盖到1920×1080的黑色背景数组上,核心是计算小图像在背景中的起始坐标,通过数组切片赋值完成覆盖,具体步骤如下:
步骤说明
- 获取尺寸信息:分别提取背景图和小图像的高度、宽度
- 计算居中起始位置:通过背景与图像的尺寸差的一半,得到垂直和水平方向的起始坐标
- 切片赋值:将小图像数组赋值到背景图对应的切片区域
完整代码示例
import numpy as np # 初始化黑色背景数组 blackImg = np.zeros((1920, 1080, 3), np.uint8) # 替换为你的实际图像数组(示例为随机生成的720×1280彩色图) img = np.random.randint(0, 255, (720, 1280, 3), np.uint8) # 获取背景和图像的高、宽 h_bg, w_bg = blackImg.shape[:2] h_img, w_img = img.shape[:2] # 计算居中的起始坐标(整数除法保证索引为整数) y_start = (h_bg - h_img) // 2 x_start = (w_bg - w_img) // 2 # 将小图像覆盖到背景的对应区域 blackImg[y_start:y_start+h_img, x_start:x_start+w_img] = img
补充说明
- 若你的图像是单通道灰度图,只需确保背景数组也为单通道(将
np.zeros((1920, 1080, 3), np.uint8)改为np.zeros((1920, 1080), np.uint8)),代码逻辑完全通用 - 使用整数除法
//是为了避免出现小数索引,确保切片操作合法
内容的提问来源于stack exchange,提问作者licerer
相关产品推荐
相关产品推荐

