我已经两次问过这个问题而没有得到回复。那么第三次幸运可能吗?
如何使用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
任何帮助?
答案 0 :(得分:0)
您正在从blackboard
numpy数组创建PIL图像并绘制到它,但您没有将结果写回Numpy数组。尝试在return np.array(blackb)
功能的末尾添加put_splitted_text_in_blackboard
,并在程序的其余部分中使用该功能。