• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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

參考資料

  • PyShine:Add text with transparent rectangle on an image

分類:Python

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide