Python OpenCV實現(xiàn)圖片上輸出中文
OpenCV中在圖片上輸出中文一般需要借助FreeType庫實現(xiàn)。FreeType庫是一個完全免費(開源)的、高質量的且可移植的字體引擎,它提供統(tǒng)一的接口來訪問多種字體格式文件。但使用FreeType需要下載庫并重新編譯,過程麻煩一點。
在Python中,可以借助PIL(Python Imaging Library)模塊實現(xiàn),相對簡單很多,需要做的只是對圖像進行OpenCV格式和PIL格式的相互轉換。
# -*- coding: utf-8 -*-
import cv2
import numpy
from PIL import Image, ImageDraw, ImageFont
if __name__ == '__main__':
img_OpenCV = cv2.imread('01.jpg')
# 圖像從OpenCV格式轉換成PIL格式
img_PIL = Image.fromarray(cv2.cvtColor(img_OpenCV, cv2.COLOR_BGR2RGB))
# 字體 字體*.ttc的存放路徑一般是: /usr/share/fonts/opentype/noto/ 查找指令locate *.ttc
font = ImageFont.truetype('NotoSansCJK-Black.ttc', 40)
# 字體顏色
fillColor = (255,0,0)
# 文字輸出位置
position = (100,100)
# 輸出內容
str = '在圖片上輸出中文'
# 需要先把輸出的中文字符轉換成Unicode編碼形式
if not isinstance(str, unicode):
str = str.decode('utf8')
draw = ImageDraw.Draw(img_PIL)
draw.text(position, str, font=font, fill=fillColor)
# 使用PIL中的save方法保存圖片到本地
# img_PIL.save('02.jpg', 'jpeg')
# 轉換回OpenCV格式
img_OpenCV = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR)
cv2.imshow("print chinese to image",img_OpenCV)
cv2.waitKey()
cv2.imwrite('03.jpg',img_OpenCV)
輸出效果:

字體 *.ttc的存放路徑一般是: /usr/share/fonts/opentype/noto/
可以使用locate指令查找本機上已經下載的字體:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python入門教程(三十九)Python的NumPy安裝與入門
這篇文章主要介紹了Python入門教程(三十九)Python的NumPy安裝與入門,NumPy 是一個Python包,它是一個由多維數(shù)組對象和用于處理數(shù)組的例程集合組成的庫,,需要的朋友可以參考下2023-05-05
對Python的交互模式和直接運行.py文件的區(qū)別詳解
今天小編就為大家分享一篇對Python的交互模式和直接運行.py文件的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

