因為使用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()
效果展示:
以上這篇python 解決cv2繪制中文亂碼問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
本文標題: python 解決cv2繪制中文亂碼問題
本文地址: http://www.cppcns.com/jiaoben/python/294616.html