1. 程式人生 > 程式設計 >python 解決cv2繪製中文亂碼問題

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),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,139),20)
  cv2.imshow('show',img)
  if cv2.waitKey(100000) & 0xFF == ord('q'):
    cv2.destroyAllWindows()  

效果展示:

以上這篇python 解決cv2繪製中文亂碼問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。