我正在写一个手写识别应用程序,我的输入必须具有一定的大小(128x128)。当我发现一封信时,它看起来像这样:
例如,该图像的大小为40x53。我想把它变成128x128,但简单地调整它就会降低质量,特别是对于较小的图像。我想以某种方式将其余部分填充到128x128,中间是40x53。背景颜色也应该保持相对相同。我正在使用Python的opencv,但我是新手。我怎么能这样做,甚至可能吗?
答案 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)