簡(jiǎn)單幾何圖像一般包括點(diǎn)、直線、矩陣、圓、橢圓、多邊形等等。首先認(rèn)識(shí)一下opencv對(duì)像素點(diǎn)的定義。圖像的一個(gè)像素點(diǎn)有1或者3個(gè)值,對(duì)灰度圖像有一個(gè)灰度值,對(duì)彩色圖像有3個(gè)值組成一個(gè)像素值,他們表現(xiàn)出不同的顏色。
那么有了點(diǎn)才能組成各種多邊形。
(一)首先繪制直線
函數(shù)為:cv2.line(img,Point pt1,Point pt2,color,thickness=1,line_type=8 shift=0)
有值的代表有默認(rèn)值,不用給也行。可以看到這個(gè)函數(shù)主要接受參數(shù)為兩個(gè)點(diǎn)的坐標(biāo),線的顏色(彩色圖像的話顏色就是一個(gè)1*3的數(shù)組)如下:
1 2 3 4 5 6 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 ),np.uint8)#生成一個(gè)空灰度圖像
cv2.line(img,( 0 , 0 ),( 511 , 511 ), 255 , 5 )
plt.imshow(img, 'gray' )</code>
|
1 2 3 4 5 6 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 , 3 ),np.uint8)#生成一個(gè)空彩色圖像
cv2.line(img,( 0 , 0 ),( 511 , 511 ),( 155 , 155 , 155 ), 5 )
plt.imshow(img, 'brg' )</code>
|
(二)繪制矩形
函數(shù):cv2.rectangle(img,(380,0),(511,111),(255,0,0),3),需要確定的就是矩形的兩個(gè)點(diǎn)(左上角與右下角),顏色,線的類型(不設(shè)置就默認(rèn))。
比如:
1 2 3 4 5 6 7 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 , 3 ),np.uint8)#生成一個(gè)空彩色圖像
cv2.rectangle(img,( 20 , 20 ),( 411 , 411 ),( 55 , 255 , 155 ), 5 )
plt.imshow(img, 'brg' )
</code>
|
(三)繪制圓形
繪制圓形也很簡(jiǎn)單,只需要確定圓心與半徑,函數(shù):
cv2.circle (img,(380,0),63,(255,0,0),3),比如:
1 2 3 4 5 6 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 , 3 ),np.uint8)#生成一個(gè)空彩色圖像
cv2.circle(img,( 200 , 200 ), 50 ,( 55 , 255 , 155 ), 1 )#修改最后一個(gè)參數(shù)
plt.imshow(img, 'brg' )</code>
|
1 2 3 4 5 6 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 , 3 ),np.uint8)#生成一個(gè)空彩色圖像
cv2.circle(img,( 200 , 200 ), 50 ,( 55 , 255 , 155 ), 8 )#修改最后一個(gè)參數(shù)
plt.imshow(img, 'brg' )</code>
|
(四)繪制橢圓
橢圓比較復(fù)雜,涉及到長(zhǎng)軸短軸,橢圓圓心,旋轉(zhuǎn)角度等等,看看opencv參考手冊(cè)上的介紹吧:
圖像化如下:
一個(gè)例子如下:
1 2 3 4 5 6 7 | <code class = "hljs" python= "" > import cv2
import numpy as np
from matplotlib import pyplot as plt
img = np.zeros(( 512 , 512 , 3 ),np.uint8)#生成一個(gè)空彩色圖像
cv2.ellipse(img,( 256 , 256 ),( 150 , 100 ), 0 , 0 , 180 , 250 ,- 1 )
#注意最后一個(gè)參數(shù)- 1 ,表示對(duì)圖像進(jìn)行填充,默認(rèn)是不填充的,如果去掉,只有橢圓輪廓了
plt.imshow(img, 'brg' )</code>
|
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。