日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python進(jìn)行OpenCV實(shí)戰(zhàn)之畫圖(直線、矩形、圓形)

瀏覽:34日期:2022-07-13 08:27:19

前言

在上一節(jié)我們通過使用NumPy的數(shù)組分割成功的在我們的圖像上畫了一個綠色的方塊,但是如果我們想畫一個單一的線條或者圓圈該怎么辦呢?NumPy沒有提供相關(guān)的功能,但是OpenCV提供了相關(guān)的函數(shù),在本節(jié)就將為大家介紹三個基本的OpenCV畫圖方法:

cv2.line() #1cv2.rectangle() #2cv2.circle() #3

1 畫直線和矩形

在開始我們用OpenCV畫我們的杰作之前,我們需要定義一個畫布

import numpy as np #1import cv2 #2canvas = np.zeros((300, 300, 3), dtype='uint8') #3

#1-2:

關(guān)于所需包的導(dǎo)入

#3:

我們使用np.zeros()方法構(gòu)造了一個300*300的NumPy數(shù)組,同時分配了三個顏色空間,分別表示Red,Green,Blue,正如zeros名字所描述的一樣,這個方法用0填充了這個數(shù)組的每一個元素。在np.zeros()的第二個變量是數(shù)據(jù)類型:dtype。由于我們需要用RGB格式來表示我們的圖像,它的取值范圍是[0,255],所以我們用“uint8”就顯得至關(guān)重要了,如果不聲明的話np.zeros()默認(rèn)的變量類型是float64.

1.1 畫直線

green = (0, 255, 0) #4cv2.line(canvas, (0, 0), (300, 300), green) #5cv2.imshow('Canvas', canvas) #6cv2.waitKey(0) #7red = (0, 0, 255) #8cv2.line(canvas, (300, 0), (0, 300), red, 3) #9cv2.imshow('Canvas', canvas) #10cv2.waitKey(0) #11

#4:

我們定義了一個元組來表示綠色

#5-7:

我們在canvas上畫了一條綠線從坐標(biāo)(0,0)到(300,300),將結(jié)果顯示出來,并等待按下任意按鍵

#8:

我們定義了一個元組來表示紅色,再次強(qiáng)調(diào)OpenCV是BGR模式而不是RGB模式

#9-11:

我們在canvas上畫了一條紅線從坐標(biāo)(300,0)到(0,300),并且該線的線型為3個像素,這也是最后一個參數(shù)的含義,然后將結(jié)果顯示出來,并等待按下任意按鍵

1.2 畫矩形

cv2.rectangle(canvas, (10, 10), (60, 60), green) #12cv2.imshow('Canvas', canvas) #13cv2.waitKey(0) #14cv2.rectangle(canvas, (50, 200), (200, 225), red, 5) #15cv2.imshow('Canvas', canvas) #16cv2.waitKey(0) #17blue = (255, 0, 0) #18cv2.rectangle(canvas, (200, 50), (225, 125), blue, -1) #19cv2.imshow('Canvas', canvas) #20cv2.waitKey(0) #21

#12-14:

我們使用了cv2.rectangle()方法,這個方法與cv2.line()方法用法是一樣的,第一個參數(shù)表示我們想要在canvas這個畫布上進(jìn)行畫圖,第二個參數(shù)是我們矩形的開始點(diǎn)(10,10),第三個參數(shù)是我們矩形的結(jié)束點(diǎn)(60,60),通過這兩個點(diǎn)我們定義了一個50*50像素大小的區(qū)域,第四個參數(shù)是我們矩形邊框的顏色——綠色,然后將結(jié)果顯示出來,并等待按下任意按鍵。

#15-17:

在第15行代碼中,正如我們可以控制話直線的線型粗細(xì)程度,我們也可以控制畫矩形的線型粗細(xì),在這行代碼中最后一個參數(shù)“5”,則表示我們將在canvas上畫出一個邊框粗細(xì)為5個像素大小的起點(diǎn)為(50, 200),終點(diǎn)為 (200, 225)的紅色矩形,然后將結(jié)果顯示出來,并等待按下任意按鍵。

#18-21

到目前為止,我們畫的都是圖形的邊框,如果我們想要填充這個邊框怎么辦呢? 在第19行代碼中:

cv2.rectangle(canvas, (200, 50), (225, 125), blue, -1) #19

我們畫了一個起點(diǎn)為(200,50),終點(diǎn)為(225,125)的藍(lán)色矩形,當(dāng)我們將最后一個設(shè)置線型的參數(shù)設(shè)置為“-1”,我們便可以得到一個填充藍(lán)色的矩形。

2 畫圓形

畫圓形和畫直線和矩形是一樣容易的,但是它有有一些不同:

2.1 同心圓

canvas = np.zeros((300, 300, 3), dtype='uint8') #22(centerX, centerY) = (canvas.shape[1] // 2, canvas.shape[0] // 2) #23white = (255, 255, 255) #24for r in range(0, 175, 25): #25 cv2.circle(canvas, (centerX, centerY), r, white) #26cv2.imshow('Canvas', canvas) #27cv2.waitKey(0) #28for i in range(0, 25): #29 radius = np.random.randint(5, high=200) #30 color = np.random.randint(0, high=256, size=(3,)) #31 pt = np.random.randint(0, high=300, size=(2,)) #32 cv2.circle(canvas, tuple(pt), radius, color, 1) #33cv2.imshow('Canvas', canvas) #34cv2.waitKey(0) #35

#22:

我們重新將我們的畫板變成一個白板

#23:

我們定義并計(jì)算一個中心點(diǎn)的坐標(biāo)(centerX,centerY),在第1節(jié)和第2節(jié)我們均提到過shape[0]表示圖片的高度,shape[1]表示圖片的寬度,分別取它們的一半,得到centerY,centerX

#24:

定義一個白色的像素

#25-28:

我們從[0,175)的范圍以跨度為25進(jìn)行循環(huán)來取圓的半徑,

cv2.circle(canvas, (centerX, centerY), r, white) #26

然后在第26行通過cv2.circle()來進(jìn)行畫圓,第一個參數(shù)表示在canvas上進(jìn)行繪畫,第二個參數(shù)表示圓心,第三個參數(shù)表示半徑,第四個參數(shù)表示顏色。然后將結(jié)果顯示出來,并等待按下任意按鍵。

2.2 隨機(jī)圓

讓我們來讓圓多一點(diǎn)趣味:

for i in range(0, 25): #29 radius = np.random.randint(5, high=200) #30 color = np.random.randint(0, high=256, size=(3,)) #31 pt = np.random.randint(0, high=300, size=(2,)) #32 cv2.circle(canvas, tuple(pt), radius, color, -1) #33cv2.imshow('Canvas', canvas) #34cv2.waitKey(0) #35

#29:

通過循環(huán)表示,我們將畫25個圓

#30-32:

如果要畫圓,我們需要三個基本元素:圓的半徑,圓的顏色,圓的圓心。在這里我們需要通過np.random.randint使用NumPy中產(chǎn)生隨機(jī)數(shù)的能力。

radius = np.random.randint(5, high=200) #30

在第30行我們在[5,200)范圍內(nèi)產(chǎn)生隨機(jī)數(shù)

color = np.random.randint(0, high=256, size=(3,)) #31

在第31行我們將在[0,256)范圍內(nèi)產(chǎn)生隨機(jī)數(shù),由于顏色值擁有3個通道值,我們通過size=(3,)讓NumPy返回一個包含三個元素的列表。

pt = np.random.randint(0, high=300, size=(2,)) #32

在第32行我們將在[0,300)范圍內(nèi)產(chǎn)生隨機(jī)數(shù),我們通過size=(2,)讓NumPy返回一個包含2個元素的列表來表示圓心。

#33:

cv2.circle(canvas, tuple(pt), radius, color, -1) #33

在第33行中,我們通過調(diào)用cv2.circle()方法來畫圓,第一個參數(shù)表示在canvas上畫圓,第二個參數(shù)圓心坐標(biāo)需要注意必須是元組,所以使用tuple來進(jìn)行強(qiáng)制轉(zhuǎn)化列表,第三個參數(shù)是半徑,第四個參數(shù)表示顏色,第5個參數(shù)為“-1”,表示產(chǎn)生實(shí)心圓。

#34-35: 將結(jié)果顯示出來,并等待按下任意按鍵。

3 完整代碼

新建drawing.py

import numpy as npimport cv2canvas = np.zeros((300, 300, 3), dtype='uint8')green = (0, 255, 0)cv2.line(canvas, (0, 0), (300, 300), green)cv2.imshow('Canvas', canvas)cv2.waitKey(0)red = (0, 0, 255)cv2.line(canvas, (300, 0), (0, 300), red, 3)cv2.imshow('Canvas', canvas)cv2.waitKey(0)cv2.rectangle(canvas, (10, 10), (60, 60), green)cv2.imshow('Canvas', canvas)cv2.waitKey(0)cv2.rectangle(canvas, (50, 200), (200, 225), red, 5)cv2.imshow('Canvas', canvas)cv2.waitKey(0)blue = (255, 0, 0)cv2.rectangle(canvas, (200, 50), (225, 125), blue, -1)cv2.imshow('Canvas', canvas)cv2.waitKey(0)canvas = np.zeros((300, 300, 3), dtype='uint8')(centerX, centerY) = (canvas.shape[1] // 2, canvas.shape[0] // 2)white = (255, 255, 255)for r in range(0, 175, 25): cv2.circle(canvas, (centerX, centerY), r, white)cv2.imshow('Canvas', canvas)cv2.waitKey(0)for i in range(0, 25): radius = np.random.randint(5, high=200) color = np.random.randint(0, high=256, size=(3,)) pt = np.random.randint(0, high=300, size=(2,)) cv2.circle(canvas, tuple(pt), radius, color, -1)cv2.imshow('Canvas', canvas)cv2.waitKey(0)

4 效果展示

python進(jìn)行OpenCV實(shí)戰(zhàn)之畫圖(直線、矩形、圓形)

python進(jìn)行OpenCV實(shí)戰(zhàn)之畫圖(直線、矩形、圓形)

python進(jìn)行OpenCV實(shí)戰(zhàn)之畫圖(直線、矩形、圓形)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区激情| 久久久男人天堂| 亚洲一区二区免费在线观看| 国产精品久一| 视频一区欧美精品| 久久一区二区中文字幕| 色婷婷综合网| 精品一二三区| 欧美成人一二区| 久久国产精品毛片| 精品久久国产一区| 国产精品2023| 免费在线日韩av| 国产视频一区二区在线播放| 日韩综合一区二区| 黄色成人在线网址| 久久影视一区| 亚洲欧洲另类| 婷婷亚洲五月| 日韩精品一级二级| 视频一区视频二区中文字幕| 午夜欧美在线| 玖玖精品视频| 日韩中文av| 欧美日韩va| 国产精品18| 中文av在线全新| 日韩精品欧美| 国产一区白浆| 日本麻豆一区二区三区视频| 久久国产欧美日韩精品| 国内自拍视频一区二区三区| 国产福利电影在线播放| 精品欧美一区二区三区在线观看| 久久精品青草| 亚洲女人av| 日韩av一级片| 精品国产一区二| 99久久99久久精品国产片果冰| 成人av动漫在线观看| 视频一区二区欧美| 国产激情精品一区二区三区| 女生影院久久| 日韩精品福利一区二区三区| 国产精品s色| 国产亚洲激情| 天堂精品久久久久| 欧美成人a交片免费看| 中文无码久久精品| 精品久久久网| 亚洲午夜免费| 日韩欧美一区二区三区在线观看| 日韩综合小视频| 激情丁香综合| 国产日韩欧美中文在线| 尤物在线精品| 精品国产网站| 久久国内精品视频| 亚洲免费在线| 在线日韩视频| 麻豆极品一区二区三区| 久久国产福利| 亚洲成av在线| 麻豆精品视频在线观看视频| 亚洲日本三级| 四虎4545www国产精品| 国产欧美亚洲一区| 亚洲深深色噜噜狠狠爱网站| 91精品精品| 日本一二区不卡| 国产精品白丝一区二区三区| 久久国产精品99国产| 欧美日韩高清| 久久久9色精品国产一区二区三区| 在线免费观看亚洲| 欧美不卡视频| 久久久成人网| 国产v综合v| 在线一区av| 亚洲色诱最新| 欧美啪啪一区| 91欧美极品| 日本欧美不卡| 国产精品第十页| 免费久久99精品国产| 国产传媒在线| 日韩av成人高清| 1024精品一区二区三区| 你懂的网址国产 欧美| 欧美91福利在线观看| 麻豆一区二区在线| 免费观看久久久4p| 91精品一区二区三区综合在线爱| 国产精品1luya在线播放| 免费成人在线观看| 久久黄色影院| 亚洲一级在线| 99视频精品全国免费| 欧美日韩调教| 欧美性感美女一区二区| 国语对白精品一区二区| 免费日韩成人| 国产精品极品| 视频一区欧美精品| 国产尤物精品| 欧美日中文字幕| 欧美日韩激情在线一区二区三区| 国产成人精品一区二区三区在线| 久久国产人妖系列| 国产精品久久久免费| 国产乱码精品一区二区亚洲| 日本午夜精品久久久久| 午夜久久av| 涩涩涩久久久成人精品| 日韩在线网址| 国产精品久久久久久av公交车| 六月丁香综合在线视频| 久久99影视| 伊人久久在线| 免费久久精品| 亚洲制服一区| 麻豆久久久久久久| 欧美自拍一区| 久久久久黄色| 欧美二三四区| 久久成人国产| 国产福利一区二区精品秒拍 | 亚洲成人va| 97久久中文字幕| 不卡一区2区| 久久精品国产精品亚洲毛片| 欧美特黄a级高清免费大片a级| 国产精品一区二区中文字幕| 亚洲免费精品| 久久五月天小说| 中文在线中文资源| 精品国产一级| 久久精品免费看| 国产精品一区二区中文字幕| 久久av一区二区三区| 一本一道久久a久久精品蜜桃| 精品视频高潮| 国产一级成人av| 男人的天堂久久精品| 午夜久久黄色| 亚洲福利一区| 午夜久久一区| 欧美特黄a级高清免费大片a级| 午夜久久中文| 久久蜜桃av| 欧美日韩国产综合网| 99久久精品费精品国产| 国产99亚洲| 亚洲天堂久久| 一区久久精品| 蜜桃av一区| 婷婷精品在线观看| 日本在线不卡视频一二三区| 亚洲一区二区小说| 亚洲九九精品| 欧美日本久久| 国产黄色一区| 成人欧美一区二区三区的电影| 九九九精品视频| 日本蜜桃在线观看视频| 97视频热人人精品免费| 日韩免费视频| 国产日韩专区| 日韩精品乱码av一区二区| 清纯唯美亚洲综合一区| 久久精品理论片| 国产成人精品亚洲日本在线观看| 高清一区二区| 精品美女在线视频| 久久久久久自在自线| 欧美日中文字幕| 日韩毛片网站| 黑森林国产精品av| 99国产精品视频免费观看一公开| 亚洲天堂av资源在线观看| 国产精品mm| 黄色精品网站| 美女性感视频久久| 91精品99| 国产精品日本一区二区不卡视频| 精品国产91| 亚洲人成毛片在线播放女女| 国产乱码精品一区二区三区四区| 国产精品国产一区| 亚洲少妇诱惑| 粉嫩av一区二区三区四区五区 | 亚洲三级欧美| 色狠狠一区二区三区| 午夜av成人| 美女毛片一区二区三区四区最新中文字幕亚洲 | 黄色欧美在线| 日产欧产美韩系列久久99| 国产字幕视频一区二区| 国产精品v亚洲精品v日韩精品| 日本 国产 欧美色综合|