Python | OpenCV 在圖片中加入文字標註
📚 前言
在前一篇我們學會了 繪製各種形狀,能夠在圖片上標註直線、矩形、圓形、橢圓、多邊形與箭頭。
這一篇要介紹 在圖片中加入文字標註,這是影像處理中非常常見的需求,例如在圖片上加上說明文字、標記人名或顯示座標資訊。
📝 繪製文字(Text)
原理說明
OpenCV 提供 cv2.putText() 函式來繪製文字:
1 | cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType) |
text:要顯示的文字字串。org:文字左下角的座標 (x, y)。fontFace:字型,例如cv2.FONT_HERSHEY_SIMPLEX。fontScale:字體大小縮放。color:文字顏色 (BGR 格式)。thickness:字體粗細。lineType:線條類型,常用cv2.LINE_AA讓文字更平滑。
💻 範例程式:基本文字標註
1 | import cv2 |

圖:程式碼執行結果 — 基本文字標註
💻 範例程式:多種字型與大小
1 | import cv2 |

圖:程式碼執行結果 — 多種字型與大小
🀄 顯示中文字
原理說明
OpenCV 的 cv2.putText() 只支援英文字型,如果直接輸入中文字,通常會出現亂碼或無法顯示。
要在圖片中正確顯示中文,必須搭配 Pillow (PIL) 與 OpenCV:
- 準備中文字型檔
- 下載支援繁體或簡體中文的字型,例如 Google 的 Noto Sans Traditional Chinese。
- 解壓縮後會得到
.ttf檔案(例如NotoSansTC-Regular.ttf)。 - 將字型檔放在程式同一個資料夾,或指定完整路徑。
- 使用 Pillow 繪製文字
- 先將 OpenCV 的圖片轉換成 Pillow 的
Image格式。 - 使用
ImageFont.truetype()載入中文字型檔。 - 用
ImageDraw.text()在圖片上繪製中文字。
- 先將 OpenCV 的圖片轉換成 Pillow 的
- 轉回 OpenCV 格式
- 將 Pillow 的圖片轉換成
numpy array,就能繼續用 OpenCV 顯示或處理。
- 將 Pillow 的圖片轉換成
- 💡 補充說明:常見可用的中文字型檔包括:
- Noto Sans TC (
NotoSansTC-Regular.ttf) — Google 提供的免費字型,支援繁體中文。 - 微軟正黑體 (
msjh.ttc) — Windows 系統常見字型。 - 思源黑體 (
SourceHanSansTC-Regular.otf) — Adobe & Google 合作的開源字型。
- Noto Sans TC (
💻 範例程式:中文字標註
1 | import cv2 |

圖:程式碼執行結果 — 顯示中文字
💻 範例程式:文字搭配形狀標註
1 | import cv2 |

圖:程式碼執行結果 — 文字搭配形狀標註
📊 效果比較
| 功能 | 函式 | 常見用途 |
|---|---|---|
| 基本文字 | cv2.putText() |
在圖片上加上簡單文字 |
| 多種字型 | cv2.putText() + 字型選擇 |
美化文字展示 |
| 中文文字 | Pillow + OpenCV | 顯示繁體或簡體中文 |
| 文字搭配形狀 | cv2.putText() + cv2.rectangle() |
標註區域並加上說明 |
⚠️ 注意事項
- 座標系統:文字座標是以左下角為基準。
- 字型選擇:OpenCV 內建字型只支援英文,顯示中文需搭配 Pillow。
- 字型檔:必須準備支援中文的字型檔(如 NotoSansTC-Regular.ttf、微軟正黑體 msjh.ttc)。
- 平滑效果:建議使用
cv2.LINE_AA,文字邊緣會更平滑。 - 顏色格式:OpenCV 使用 BGR,而 Pillow 使用 RGB,轉換時要注意。
🎯 結語
這一篇我們學會了 在圖片中加入文字標註,包括英文與中文的處理方式,能夠在影像上加上說明文字或標記資訊。這些技巧在影像處理、資料集標註、製作教學圖片時非常常見。
在下一篇,我們將進一步探索 建立遮罩與透明效果,學習如何利用遮罩來選擇性處理影像區域,並透過透明度控制讓圖片合成更自然。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
