python 解決cv2繪制中文亂碼


因為使用cv2.putText() 只能顯示英文字符,中文會出現亂碼問題,

因此使用PIL在圖片上繪制添加中文,可以指定字體文件。

大體思路:

  • OpenCV圖片格式轉換成PIL的圖片格式;
  • 使用PIL繪制文字;
  • PIL圖片格式轉換成OpenCV的圖片格式;

具體實現:

# coding=utf-8
# cv2解決繪制中文亂碼
 
import cv2
import numpy
from PIL import Image, ImageDraw, ImageFont

 
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    if (isinstance(img, numpy.ndarray)):  # 判斷是否OpenCV圖片類型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 創建一個可以在給定圖像上繪圖的對象
    draw = ImageDraw.Draw(img)
    # 字體的格式
    fontStyle = ImageFont.truetype(
        "font/simsun.ttc", textSize, encoding="utf-8")
    # 繪制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 轉換回OpenCV格式
    return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)


if __name__ == '__main__':
    img = cv2ImgAddText(cv2.imread('img1.jpg'), "大家好,我是片天邊的雲彩", 10, 65, (0, 0 , 139), 20)
    cv2.imshow('show', img)
    if cv2.waitKey(100000) & 0xFF == ord('q'):
        cv2.destroyAllWindows()   
    

效果展示:
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM