使用Python将图像填充到一个大小

时间:2018-05-09 11:38:05

标签: python image opencv

我正在写一个手写识别应用程序,我的输入必须具有一定的大小(128x128)。当我发现一封信时,它看起来像这样:

this

例如,该图像的大小为40x53。我想把它变成128x128,但简单地调整它就会降低质量,特别是对于较小的图像。我想以某种方式将其余部分填充到128x128,中间是40x53。背景颜色也应该保持相对相同。我正在使用Python的opencv,但我是新手。我怎么能这样做,甚至可能吗?

1 个答案:

答案 0 :(得分:1)

在这里,您可以使用outputImage获取所提问题。基本上我使用copyMakeBorder方法添加了边框。您可以参考this了解更多详情。您必须在value参数中根据需要设置颜色值。现在它是白色[255,255,255]。

但我宁愿建议你调整原始图像的大小,看起来这是比你问的更好的选择。调整大小后,您可以在以下代码中使用resized。为方便起见,我在此代码中添加了两种方法。

import cv2
import numpy as np
inputImage = cv2.imread('input.jpg', 1)

outputImage = cv2.copyMakeBorder(inputImage,37,38,44,44,cv2.BORDER_CONSTANT,value=[255,255,255])

resized = cv2.resize(inputImage, (128,128), interpolation = cv2.INTER_AREA)
cv2.imwrite('output.jpg', outputImage)
cv2.imwrite('resized.jpg', resized)