Python 在numpy中的白色画布上添加png图像
我有一个png图像,它必须覆盖在白色画布上。png图像尺寸为200*200。画布尺寸为512*512Python 在numpy中的白色画布上添加png图像,python,opencv,computer-vision,Python,Opencv,Computer Vision,我有一个png图像,它必须覆盖在白色画布上。png图像尺寸为200*200。画布尺寸为512*512 #SOURCE IMAGE img=cv2.imread("xx.png") import cv2 import numpy as np img_1 = np.zeros([512,512,1],dtype=np.uint8) img_1.fill(255) # or img[:] = 255 cv2.imshow('Single Channel Window', img_1) print("
#SOURCE IMAGE
img=cv2.imread("xx.png")
import cv2
import numpy as np
img_1 = np.zeros([512,512,1],dtype=np.uint8)
img_1.fill(255)
# or img[:] = 255
cv2.imshow('Single Channel Window', img_1)
print("image shape: ", img_1.shape)
cv2.waitKey(0)
cv2.destroyAllWindows()
这里画布是白色区域,img是您的输入图像
canvas = np.zeros((512,512,3))
canvas.fill(255)
img = cv2.imread("xx.png",cv2.IMREAD_COLOR)
canvas[canvas.shape[0]//2-img.shape[0]//2:canvas.shape[0]//2+img.shape[0]//2,
canvas.shape[1]//2-img.shape[1]//2:canvas.shape[1]//2+img.shape[1]//2] = img
这是一个过于简单的代码,假设源代码和画布都是正方形和RGB图像
标志cv2.IMREAD_COLOR很重要,因为画布有3个通道。
如果要使用灰度,请在画布中使用1个通道,如果要使用png(包括alpha通道),请相应地使用4个通道 现在只需将图像置于白色背景中即可。由于图像形状为
200X200
且白色背景形状为512X512
,因此图像白边距将为(512-200)/2=156
。因此:
import cv2
import numpy as np
img=cv2.imread("xx.png", 0)
row, col = img.shape # row = 200, col = 200
img_1 = np.zeros([512,512],dtype=np.uint8)
img_1.fill(255)
margin = (512 - row)//2
img_1[margin: margin+row, margin: margin+column] = img
cv2.imshow('Single Channel Window', img_1)
print("image shape: ", img_1.shape)
cv2.waitKey(0)
cv2.destroyAllWindows()
也可以使用白色像素填充原始图像,并获得相同的结果。因此,对于这种情况:
img = cv2.imread('1.png', 0)
margin = (512 - 200)//2
img_1 = np.pad(img, margin, 'constant', constant_values=255)
当你说你想把这个图像,你想把源图像放在白色画布的哪里?中心?还是左上角?或者两个尺寸都匹配?我想把图像放在白色背景的中心,
img
?200200是这个形状