可以用PIL显示/集成numpy数组吗?

时间:2018-06-19 06:59:27

标签: python numpy opencv

我已经两次问过这个问题而没有得到回复。那么第三次幸运可能吗?

如何使用PIL显示numpy数组?我正在尝试使用带有PIL的Times New Roman字体,我需要在使用numpy数组制作的空白屏幕上显示字符。

如果我使用内置的cv2.putText函数,那么它可以正常工作:

cv2.putText(blackboard, text, (4, y), cv2.FONT_HERSHEY_COMPLEX, 2, (255, 255, 255))

输出:output1

但是因为我必须使用Times New Roman,所以我使用了PIL库。

代码:

def put_splitted_text_in_blackboard(blackboard, splitted_text):
y = 200
blackb = Image.fromarray(blackboard)
draw = ImageDraw.Draw(blackb)
for text in splitted_text:
    fonts = ImageFont.truetype('Times New Roman.ttf', 50, encoding='unic')
    draw.text((4, y), text, font=fonts, fill=(255, 255, 255))
    y += 50

numpy数组在recogn()中定义如下:

blackboard = np.zeros((480, 640, 3), dtype=np.uint8)
    splitted_text = split_sentence(text, 2)
    put_splitted_text_in_blackboard(blackboard, splitted_text)
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    res = np.hstack((img, blackboard))
    cv2.imshow("Recognizing gesture", res)
    cv2.imshow("thresh", thresh)
    if cv2.waitKey(1) == ord('q'):
        break


keras_predict(model, np.zeros((50, 50), dtype=np.uint8))
recognize()

当我运行此模块时,程序执行正常,但我看不到空白屏幕上的文本。

输出:Output2

任何帮助?

1 个答案:

答案 0 :(得分:0)

您正在从blackboard numpy数组创建PIL图像并绘制到它,但您没有将结果写回Numpy数组。尝试在return np.array(blackb)功能的末尾添加put_splitted_text_in_blackboard,并在程序的其余部分中使用该功能。