Python

Python 以 OpenCV 在圖片上加入文字方塊教學與範例

介紹如何在 Python 中使用 OpenCV 在圖片中加入半透明的文字方塊。

這裡介紹兩種在圖片中加入文字方塊的方法,一種是使用 OpenCV 本身的功能,另外一種是使用 pyshine 模組。

使用 OpenCV

通常在經過 AI 辨識圖片之後,會需要在圖片中加上方框與文字的標示,以下是使用 OpenCV 加入方框與文字的範例:

import cv2

# 讀取圖檔
image = cv2.imread('lena.jpg')

# (x1,y1)
#    o-------+
#    |       |
#    +-------o
#          (x2,y2)

# 左上角與右下角座標
x1 = 40
y1 = 40
x2 = 190
y2 = 130

# 顏色
color = (36, 255, 12)
text_color = (255, 255, 255)

# 文字內容
text = 'HELLO WORLD!'

# 加入方框
image = cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)

# 計算文字的大小
(w, h), _ = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.6, 1)

# 加入文字背景區塊
image = cv2.rectangle(image, (x1, y1 - 20), (x1 + w, y1), color, -1)

# 加入文字
image = cv2.putText(image, text, (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, text_color, 1)

#  顯示圖片
cv2.imshow('Output', image)
cv2.waitKey(0)
加入方框與文字標示

使用 pyshine 模組

使用 pip 安裝 pyshine 與相關必要模組:

# 安裝 pyshine 與必要模組
pip3 install opencv-contrib-python pyshine numpy

以下是使用 pyshine 模組的 putBText 函數加入基本文字方塊的範例程式碼:

#!/usr/bin/env python3
import pyshine as ps
import cv2

# 讀取圖檔
image = cv2.imread('lena.jpg')

# 文字內容
text = 'HELLO WORLD!'

# 加入文字方塊
image = ps.putBText(
        image,                            # 原始影像
        text,                             # 文字內容
        text_offset_x = 20,               # X 軸座標
        text_offset_y = 20,               # Y 軸座標
        vspace = 10,                      # 縱向空間
        hspace = 10,                      # 橫向空間
        font_scale = 1.0,                 # 字型大小
        background_RGB = (228, 225, 222), # 背景顏色
        text_RGB = (70, 90, 35)           # 文字顏色 
        )

#  顯示圖片
cv2.imshow('Output', image)
cv2.waitKey(0)
在圖片上加入文字方塊

putBText 函數還有一些進階的選項,包含自選字型、線條粗細與透明度等:

#!/usr/bin/env python3
import pyshine as ps
import cv2

# 讀取圖檔
image = cv2.imread('lena.jpg')

# 文字內容
text = 'HELLO WORLD!'

# 加入文字方塊
image = ps.putBText(
        image,                            # 原始影像
        text,                             # 文字內容
        text_offset_x = 20,               # X 軸座標
        text_offset_y = 20,               # Y 軸座標
        vspace = 10,                      # 縱向空間
        hspace = 10,                      # 橫向空間
        font_scale = 1.0,                 # 字型大小
        background_RGB = (230, 230, 230), # 背景顏色
        text_RGB = (0x2a, 0x80, 0x0c),    # 文字顏色 
        font = cv2.FONT_HERSHEY_PLAIN,    # 字型
        thickness = 1,                    # 字體線條粗細
        alpha = 0.2                       # 透明度
        )

#  顯示圖片
cv2.imshow('Output', image)
cv2.waitKey(0)
在圖片上加入文字方塊

在字型的選擇部分,可以選用下列這些 OpenCV 的字型:

  • cv2.FONT_HERSHEY_COMPLEX
  • cv2.FONT_HERSHEY_COMPLEX_SMALL
  • cv2.FONT_HERSHEY_DUPLEX
  • cv2.FONT_HERSHEY_PLAIN
  • cv2.FONT_HERSHEY_SCRIPT_COMPLEX
  • cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
  • cv2.FONT_HERSHEY_SIMPLEX
  • cv2.FONT_HERSHEY_TRIPLEX
  • cv2.FONT_ITALIC

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago