opencv3.2將中文輸出到圖片上


opencv自帶的putText函數無法輸出utf8類型的字符,因此無法將中文打印到圖片上。用這篇文章的freetype可以實現中文輸出,但是需要將字符解碼轉碼比較麻煩,而Pillow的Image函數輸出中文則相對容易些,因此這里的做法是現將圖片從從cv2格式轉到PIL格式,加上中文后再轉成cv2格式輸出。

1. 下載中文字體庫

這里可以參考之前matplotlib輸出中文的文章的第一部分。

2. cv2轉PIL

import Image, ImageDraw, ImageFont, cv2

cap = cv2.VideoCapture(0) # 從視頻流中截取圖片
ret, im = cap.read()
cv2_im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) # cv2和PIL中顏色的hex碼的儲存順序不同
pil_im = Image.fromarray(cv2_im)

3. PIL圖片上打印中文

draw = ImageDraw.Draw(pil_im) # 括號中為需要打印的canvas,這里就是在圖片上直接打印
font = ImageFont.truetype("simhei.ttf", 20, encoding="utf-8) # 第一個參數為字體文件路徑,第二個為字體大小
draw.text((0, 0), "eg:打印在這里", (0, 0, 255), font=font) # 第一個參數為打印的坐標,第二個為打印的文本,第三個為字體顏色,第四個為字體

4. PIL圖片轉cv2

import numpy as np
cv2_text_im = cv2.cvrColor(np.array(pil_im), cv2.COLOR_RGB2BGR))
cv2.imshow("Video", cv2_text_im)

參考

https://stackoverflow.com/questions/14134892/convert-image-from-pil-to-opencv-format
https://stackoverflow.com/questions/13576161/convert-opencv-image-into-pil-image-in-python-for-use-with-zbar-library
https://stackoverflow.com/questions/16373425/add-text-on-image-using-pil


免責聲明!

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



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