opencv-python 通过 PIL支持中文添加文字,速度还慢,最好使用英文

import cv2
import cv2 as cv
import numpy as np
from PIL import Image, ImageFont, ImageDraw
import time

def paint_chinese_opencv(im, chinese, pos, color):
    img_PIL = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
    font = ImageFont.truetype('/home/chenyang/PycharmProjects/show_face_decetor/fonts/simsun.ttc', 25)
    fillColor = color  # (255,0,0)
    position = pos  # (100,100)
    if not isinstance(chinese, np.unicode):
        chinese = chinese.decode('utf-8')
    draw = ImageDraw.Draw(img_PIL)
    for _ in range(100):
        draw.text(position, chinese, font=font, fill=fillColor)

    img = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
    return img


# 读入图片
src = cv.imread('add_text_to_image.jpg')
#
# # 调用cv.putText()添加文字
# start=time.time()
# text = "Your are so beautiful! 记得覅"
AddText = src.copy()
#
# cv.putText(AddText, text, (200, 100), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (130, 300), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (120, 400), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
# cv.putText(AddText, text, (250, 500), cv.FONT_HERSHEY_COMPLEX, 2.0, (150, 160, 250), 5)
#
# # 将原图片和添加文字后的图片拼接起来
# # res = np.vstack([src, AddText])
# print(time.time()-start)
# # 显示拼接后的图片
# cv.imshow('text', AddText)
# cv.waitKey()
# cv.destroyAllWindows()
if __name__ == '__main__':
    start=time.time()

    AddText=paint_chinese_opencv(AddText,"家佛山", (200, 100), (150, 160, 250))

    print(time.time()-start)
    cv.imshow('text', AddText)
    cv.waitKey()
    cv.destroyAllWindows()

你可能感兴趣的:(PIL)