官术网_书友最值得收藏!

1.4 任務(wù)3:幾何圖形繪制

1.4.1 任務(wù)描述

基于龍芯平臺(tái),利用OpenCV的相關(guān)函數(shù)實(shí)現(xiàn)常用的幾何圖形繪制。

1.4.2 技術(shù)準(zhǔn)備

在圖像處理中,我們經(jīng)常需要將某個(gè)感興趣的區(qū)域用圖形標(biāo)注出來,以便在開發(fā)時(shí)觀察和調(diào)試,尤其是在進(jìn)行物體檢測(cè)與物體跟蹤時(shí),繪圖是必不可少的操作。OpenCV提供了一系列的幾何圖形繪制函數(shù),可以實(shí)現(xiàn)在圖像中繪制線段、矩形、圓形、橢圓形、多邊形、文本等功能。

1.line()函數(shù)

line()函數(shù)用于繪制線段,其基本格式如下。

cv2.line(img, start_point, end_point, color, thickness=0)

參數(shù)如下。

img:指定需要繪制的圖像。

start_point:指定線段的起始坐標(biāo),必須是元組類型。

end_point:指定線段的結(jié)束坐標(biāo),必須是元組類型。

color:指定線條的顏色,必須是元組類型,通常使用BGR顏色值表示顏色,如(255, 0, 0)表示紅色。

thickness:指定線條的寬度,默認(rèn)值為1,若設(shè)置為?1,表示繪制填充圖形。

2.rectangle()函數(shù)

rectangle()函數(shù)用于繪制矩形,其基本格式如下。

cv2.rectangle(img, point1, point2, color, thickness=0)

參數(shù)如下。

img:指定需要繪制的圖像。

point1:指定矩形左上角頂點(diǎn)的坐標(biāo),必須是元組類型。

point2:指定矩形右下角頂點(diǎn)的坐標(biāo),必須是元組類型。

color:指定線條的顏色,必須是元組類型。

thickness:指定線條的寬度。

注意,該函數(shù)每調(diào)用一次,就會(huì)產(chǎn)生一個(gè)矩形,多次調(diào)用就會(huì)產(chǎn)生多個(gè)矩形。

3.circle()函數(shù)

circle()函數(shù)用于繪制圓形,其基本格式如下。

cv2.circle(img, center, R, color, thickness=0)

參數(shù)如下。

img:指定需要繪制的圖像。

center:指定圓心坐標(biāo),必須是元組類型。

R:指定圓形的半徑。

color:指定線條的顏色,必須是元組類型。

thickness:指定線條的寬度。

4.ellipse()函數(shù)

ellipse()函數(shù)用于繪制橢圓形,其基本格式如下。

cv2.ellipse(img, center, (a, b), direction, angle_start, angle_end, color, thickness)

參數(shù)如下。

img:指定需要繪制的圖像。

center:指定橢圓形的中心坐標(biāo)。

(a,b):指定橢圓形的長軸和短軸。

direction:指定順時(shí)針方向的旋轉(zhuǎn)角度。

angle_start:指定繪制橢圓形開始的角度。

angle_end:指定繪制橢圓形結(jié)束的角度。

color:指定線條的顏色。

thickness:指定線條的寬度。

5.polylines()函數(shù)

polylines()函數(shù)用于繪制多邊形,其基本格式如下。

cv2.polylines(img, pts, isClosed, color, thickness=0)

參數(shù)如下。

img:指定需要繪制的圖像。

pts:指定點(diǎn)的坐標(biāo)集合,一般以列表的形式填入。

isClosed:指定多邊形是否閉合。若它為False,表示不閉合;若為True,表示閉合。

color:指定線條的顏色。

thickness:指定線條的寬度。

6.putText()函數(shù)

putText()函數(shù)用于繪制文本,其基本格式如下。

cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType)

參數(shù)如下。

img:指定需要添加文字的背景圖。

text:指定需要添加的文字。

org:指定添加文字的位置。

fontFace:指定字體。

fontScale:指定字號(hào)大小。

color:指定文字的顏色。

thickness:指定線條的寬度。

lineType:指定線條的種類。

1.4.3 任務(wù)實(shí)施

利用OpenCV的相關(guān)函數(shù)進(jìn)行幾何圖形繪制的代碼如下。

import cv2
import numpy as np
# 創(chuàng)建一張圖片
img = np.ones((500, 500, 3), np.uint8)
# 繪制線段
cv2.line(img, (60, 240), (220, 240), BGR(0, 0, 255):紅色, 3, cv2.LINE_AA)
cv2.line(img, (140, 160), (140, 320), BGR(0, 0, 255):紅色, 3, cv2.LINE_AA)
# 繪制矩形
cv2.rectangle(img, (100, 200), (180, 280), (0, 255, 255), 3, cv2.LINE_AA)
cv2.rectangle(img, (80, 180), (200, 300), (0, 255, 255), 3, cv2.LINE_AA)
cv2.rectangle(img, (60, 160), (220, 320), (0, 255, 255), 3, cv2.LINE_AA)
# 繪制圓形
cv2.circle(img, (140, 240), 80, (255, 255, 0), 2, cv2.LINE_AA)
cv2.circle(img, (140, 240), 60, (255, 255, 0), 2, cv2.LINE_AA)
cv2.circle(img, (140, 240), 40, (255, 255, 0), 2, cv2.LINE_AA)
# 繪制橢圓形
cv2.ellipse(img, (140, 80), (100, 50), 0, 0, 360, (0, 255, 0), 2, cv2.LINE_AA)
cv2.ellipse(img, (140, 80), (90, 40), 0, 0, 90, (255, 0, 0), 2, cv2.LINE_AA)
cv2.ellipse(img, (140, 80), (90, 40), 0, 270, 360, (0, 255, 0), 2, cv2.LINE_AA)
cv2.ellipse(img, (140, 80), (80, 30), 0, 0, 90, (0, 255, 0), 2, cv2.LINE_AA)
cv2.ellipse(img, (140, 80), (80, 30), 0, 270, 360, (255, 255, 0), 2, cv2.LINE_AA)
cv2.ellipse(img, (140, 80), (70, 20), 0, 90, 270, (255, 255, 0), 2, cv2.LINE_AA)
# 繪制多邊形
pts = np.array([[400, 100], [300, 140], [450, 250], [350, 250]], np.int32)
cv2.polylines(img, [pts], True, (0, 0, 255), 1, cv2.LINE_AA)
# 繪制文字
cv2.putText(img, 'loongson Platform: OpenCV', (0, 450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,0),4)
cv2.imshow("Image ", img)
cv2.waitKey(0)

幾何圖形繪制結(jié)果如圖1-5所示。

▲圖1-5 幾何圖形繪制結(jié)果

主站蜘蛛池模板: 宝应县| 怀仁县| 桐城市| 平乐县| 远安县| 嘉禾县| 东海县| 安阳市| 崇明县| 黄龙县| 郧西县| 武穴市| 萨迦县| 长子县| 大关县| 临夏市| 封开县| 新邵县| 章丘市| 广南县| 尉氏县| 白玉县| 湘乡市| 永德县| 湘乡市| 张家港市| 延吉市| 陈巴尔虎旗| 兴化市| 库车县| 霸州市| 新津县| 本溪市| 祁门县| 深水埗区| 花莲县| 武平县| 英德市| 安吉县| 平定县| 怀柔区|