# OpenCV如何繪制線條、矩形、圓弧線、橢圓弧線、多邊形、添加文字
OpenCV作為計算機視覺領域的核心工具庫,提供了豐富的繪圖功能。本文將詳細介紹如何使用OpenCV繪制基礎幾何圖形和文字,涵蓋線條、矩形、圓弧線、橢圓弧線、多邊形以及文字添加等操作。
## 一、準備工作
### 1.1 安裝OpenCV
```python
pip install opencv-python
import cv2
import numpy as np
# 創建空白畫布(512x512像素,3通道BGR)
canvas = np.zeros((512, 512, 3), dtype=np.uint8)
canvas.fill(255) # 白色背景
cv2.line(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)
img
: 目標圖像pt1
: 起點坐標(x,y)pt2
: 終點坐標(x,y)color
: BGR格式顏色元組thickness
: 線寬(像素)lineType
: 線型(默認8連通)# 繪制紅色對角線
cv2.line(canvas, (0,0), (511,511), (0,0,255), 5)
# 繪制綠色水平線
cv2.line(canvas, (100,200), (400,200), (0,255,0), 3)
cv2.rectangle(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)
thickness=-1
: 表示填充矩形# 繪制藍色邊框矩形
cv2.rectangle(canvas, (50,50), (200,200), (255,0,0), 2)
# 繪制填充黃色矩形
cv2.rectangle(canvas, (300,300), (450,450), (0,255,255), -1)
cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=1, lineType=cv2.LINE_8, shift=0)
center
: 圓心坐標axes
: (長軸長度,短軸長度)angle
: 旋轉角度(順時針)startAngle
: 起始角度(3點鐘方向為0度)endAngle
: 終止角度# 繪制90度圓弧
cv2.ellipse(canvas, (256,256), (100,50), 0, 0, 90, (128,0,128), 3)
# 繪制旋轉45度的半圓
cv2.ellipse(canvas, (256,256), (80,80), 45, 0, 180, (0,128,128), 2)
橢圓弧線實際上是圓弧線的擴展形式,通過設置不同的長軸和短軸實現。
# 繪制完整橢圓
cv2.ellipse(canvas, (150,400), (60,30), 0, 0, 360, (255,0,0), 2)
# 繪制部分橢圓弧
cv2.ellipse(canvas, (350,400), (80,40), 30, 45, 270, (0,0,255), 3)
cv2.polylines(img, pts, isClosed, color, thickness=1, lineType=cv2.LINE_8, shift=0)
pts
: 頂點坐標數組(需為int32類型)isClosed
: 是否閉合多邊形# 定義五邊形頂點
pts = np.array([[100,50], [200,80], [180,200], [120,220], [50,150]], np.int32)
pts = pts.reshape((-1,1,2))
# 繪制多邊形
cv2.polylines(canvas, [pts], True, (0,128,0), 3)
# 填充多邊形(使用fillPoly)
cv2.fillPoly(canvas, [pts], (200,200,0))
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=1, lineType=cv2.LINE_8, bottomLeftOrigin=False)
text
: 要繪制的字符串org
: 文字左下角坐標fontFace
: 字體類型fontScale
: 字體縮放因子FONT_HERSHEY_SIMPLEX = 0
FONT_HERSHEY_PLN = 1
FONT_HERSHEY_DUPLEX = 2
FONT_HERSHEY_COMPLEX = 3
FONT_HERSHEY_TRIPLEX = 4
FONT_HERSHEY_COMPLEX_SMALL = 5
FONT_HERSHEY_SCRIPT_SIMPLEX = 6
FONT_HERSHEY_SCRIPT_COMPLEX = 7
# 添加簡單文字
cv2.putText(canvas, 'OpenCV', (50,450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,0), 3)
# 添加帶樣式的文字
cv2.putText(canvas, 'Python', (300,100),
cv2.FONT_HERSHEY_SCRIPT_COMPLEX,
1.5, (255,100,50), 2, cv2.LINE_AA)
# 創建新畫布
canvas = np.zeros((600,800,3), np.uint8)
canvas.fill(240) # 淺灰色背景
# 繪制交通信號燈
cv2.circle(canvas, (400,150), 50, (0,0,255), -1) # 紅燈
cv2.circle(canvas, (400,250), 50, (0,165,255), -1) # 黃燈
cv2.circle(canvas, (400,350), 50, (0,255,0), -1) # 綠燈
cv2.rectangle(canvas, (300,80), (500,420), (0,0,0), 3)
# 添加文字說明
cv2.putText(canvas, "STOP", (350,160), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2)
cv2.putText(canvas, "READY", (350,260), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
cv2.putText(canvas, "GO", (370,360), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
# 顯示結果
cv2.imshow("Drawing Demo", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 使用LINE_AA抗鋸齒線型
cv2.line(canvas, (0,0), (511,511), (0,0,0), 5, cv2.LINE_AA)
# 創建透明圖層
overlay = canvas.copy()
cv2.rectangle(overlay, (100,100), (300,300), (0,0,255), -1)
cv2.addWeighted(overlay, 0.5, canvas, 0.5, 0, canvas)
cv2.arrowedLine(canvas, (400,100), (400,400), (255,0,255), 3, tipLength=0.1)
本文詳細介紹了OpenCV的繪圖功能,包括:
1. 線條繪制:cv2.line()
2. 矩形繪制:cv2.rectangle()
3. 圓弧/橢圓?。?code>cv2.ellipse()
4. 多邊形繪制:cv2.polylines()
5. 文字添加:cv2.putText()
掌握這些基礎繪圖操作,可以為圖像處理、計算機視覺項目添加可視化標注,是OpenCV應用開發的重要基礎技能。
提示:所有繪圖函數都會直接修改輸入圖像,如需保留原始圖像,請先創建副本。 “`
(全文約1850字,包含代碼示例和詳細參數說明)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。