1.
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from matplotlib.image import imread
def letterbox_image(image, size):
ih, iw, _ = np.shape(image)
w, h = size
scale = min(w/iw, h/ih)
nw = int(iw*scale)
nh = int(ih*scale)
image = cv2.resize(image, (nw, nh))
new_image = np.ones([size[1], size[0], 3]) * 128
new_image[(h-nh)//2:nh+(h-nh)//2, (w-nw)//2:nw+(w-nw)//2] = image
return new_image
2
if __name__=="__main__":
img = imread('img/timg.jpg')
plt.subplot(1, 2, 1)
plt.imshow(img)
img1 = letterbox_image(img,(512,512))
im = Image.fromarray(img1.astype('uint8'))
plt.subplot(1, 2, 2)
plt.imshow(im)
plt.show() #显示图片
该代码段展示了一个Python函数`letterbox_image`,用于将图像按比例缩放并填充到指定尺寸,保持纵横比不变。它使用OpenCV和PIL库,适用于图像处理和计算机视觉任务的预处理步骤。示例中,函数被应用到名为'timg.jpg'的图像上,将图像调整为512x512像素并显示结果。
17万+

被折叠的 条评论
为什么被折叠?



