【发布时间】:2021-11-20 09:31:18
【问题描述】:
我有以下图片:
from PIL import Image
img = Image.open("without_space.png")
img.show()
我希望增加单词之间的间隔,使其看起来像这样:
我想过将图像转换为 NumPy:
img = numpy.ndarray(img)
比增加阵列的x轴和y轴为增加间隙留出空间:
def increase_padding(img):
np_arr = np.asarray(img)
shape = np_arr.shape
y = shape[0]
colors = shape[2]
zeros = np.zeros([y,20,colors], dtype=np.uint8)
zeros[:,:,3] = 255
np_arr = np.append(np_arr,zeros, axis=1)
np_arr = np.append(zeros, np_arr, axis=1)
shape = np_arr.shape
x = shape[1]
colors = shape[2]
zeros = np.zeros([20,x,colors], dtype=np.uint8)
zeros[:,:,3] = 255
np_arr = np.append(np_arr,zeros, axis=0)
np_arr = np.append(zeros, np_arr, axis=0)
return np_arr
这是结果:
img = increase_padding(img)
img.show()
图像有更多空间来分隔单词,但现在我被卡住了。 有什么想法吗?
【问题讨论】:
-
您需要一些方法来识别单词,然后在单词之间插入空格,而不是在图像的左/右和顶部/底部。一般来说,我认为在图像中找到单词并不是一件容易的事,但在这个例子中,看起来一些简单的规则可能会起作用(特别是如果图像是黑白的,即颜色值为 0 或 255 和没有别的)。
-
有一个
numpy函数用于填充np.pad。您的问题的解决方案必须识别图像中的字母和单词。这是一个复杂的程序,不是一个可以回答的问题。 -
检测文字的bounding boxes其实比我想象的要容易。
-
也许你可以说一下你这样做的实际目的是什么?可能有更好的方法。例如,你知道图片中的文字吗?
-
我不知道前面的文字。但是所有文本都采用我上面显示的格式。白底黑