我正在 word-clouds 阅读本教程它需要光栅化字符串的形状。然后可以计算单词形状与 numpy
的交集。 .
教程作者提示Python Image Library .更直接的方法,可能是使用 pyCairo
.但是,我无法找到与每个字形对应的位掩码。
理想情况下,我想输入 1 并返回一些 1 和 0 的集合,我可以将其放入 numpy。
0000011100000
0000111100000
0001111100000
0000011100000
0000011100000
0000011100000
0000011100000
0000011100000
1111111111111
1111111111111
这是我对 Cairo 的尝试,但我无法从 Cairo 中取出位掩码或绘制它或其他任何东西:
import cairo as cr
WIDTH, HEIGHT = 256, 256
surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
ctx = cairo.Context (surface)
ctx.set_source_rgb(0.0, 0.0, 0.0)
ctx.select_font_face("Georgia", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
ctx.set_font_size(1.2)
x_bearing, y_bearing, width, height = ctx.text_extents("a")[:4]
ctx.move_to(0.5 - width / 2 - x_bearing, 0.5 - height / 2 - y_bearing)
ctx.show_text("a")
事实上,任何获取数字 ascii 表示的可靠方法都可能是合适的。
最佳答案
运行上述代码后,您可以将呈现的字母转换为 numpy bool 数组,如下所示:
import numpy as np
ar = np.frombuffer(surface.get_data(), dtype=np.int32)
bitmask = (ar.reshape(WIDTH, HEIGHT) != 0)
您可以通过使用 matplotlib 显示结果数组来验证它是否有效:
import matplotlib.pyplot as plt
plt.imshow(bitmask)
plt.show()
关于python - 在python中获取文本字符串的位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915335/