點贊 + 關注 + 收藏 = 學會了
推薦 《OpenCV-Python專欄》
繪製文字(數字和英文)
OpenCV 提供了 cv2.putText() 方法,可以方便地在圖像上繪製文本。
cv2.putText() 的基本用法:
cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType)
img:目標圖像。text:要繪製的文字。org:文字左下角的起始座標。-
fontFace:字體類型(如 cv2.FONT_HERSHEY_SIMPLEX)。fontFace可傳入的字體類型 OpenCV 也提供了選項:cv2.FONT_HERSHEY_SIMPLEX:無襯線字體(常用)。cv2.FONT_HERSHEY_PLAIN:簡單無襯線字體。cv2.FONT_HERSHEY_DUPLEX:雙線無襯線字體。cv2.FONT_HERSHEY_COMPLEX:襯線字體。cv2.FONT_HERSHEY_TRIPLEX:三線襯線字體。cv2.FONT_HERSHEY_SCRIPT_SIMPLEX:手寫字體。cv2.FONT_HERSHEY_SCRIPT_COMPLEX:複雜手寫字體。
fontScale:字體大小比例。color:文字顏色,格式為 (B, G, R)。thickness:文字線條粗細。lineType:線型,如 cv2.LINE_AA。
舉個例子
import cv2
import numpy as np
# 創建空白圖像
img = np.zeros((400, 400, 3), dtype=np.uint8)
img.fill(255) # 將背景設置為白色
# 繪製不同樣式的文字
cv2.putText(img, "Hello OpenCV!", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2) # 黑色簡單字體
cv2.putText(img, "Hello OpenCV!", (50, 100), cv2.FONT_HERSHEY_DUPLEX, 1, (255, 0, 0), 2) # 藍色粗體
cv2.putText(img, "Hello OpenCV!", (50, 150), cv2.FONT_ITALIC, 1, (0, 255, 0), 2) # 綠色斜體
cv2.putText(img, "Hello OpenCV!", (50, 200), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) # 紅色複雜字體,抗鋸齒
# 顯示圖像
cv2.imshow('Text Drawing', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
繪製中文
OpenCV 默認只支持繪製英文字母、數字和常見標點符號,無法直接繪製中文。
如果需要在圖像上繪製中文,通常需要結合第三方庫如 PIL 或使用自定義字體文件。
本文給出的方案是引入一個本地的中文字體包。我使用的是Mac自帶的中文字體 Hiragino Sans GB.ttc。
將字體文件放到項目目錄中(放其他地方也行,只要你能通過 ImageFont.truetype("字體路徑") 找到字體文件就行。
from PIL import Image, ImageDraw, ImageFont
import cv2
import numpy as np
# 創建空白圖像
img = np.zeros((400, 400, 3), dtype=np.uint8)
# 轉換為 PIL 圖像
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 使用 PIL 繪製中文
draw = ImageDraw.Draw(pil_img)
font = ImageFont.truetype("Hiragino Sans GB.ttc", 40) # 替換為你的字體路徑
draw.text((50, 100), "雷猴", font=font, fill=(255, 255, 255))
# 轉換回 OpenCV 圖像
img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)
# 顯示圖像
cv2.imshow("Chinese Text", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
點贊 + 關注 + 收藏 = 學會了