使用工具Python3.5,
使用庫numpy;opencv
涉及的函數:cv2.line() , cv2.cicle() , cv2.rectangle() , cv2.ellipse() , cv2.putText()等
需要設置的參數:
img 你想要繪制的圖形的那副圖像
color 形狀的顏色,以RGB為例,需要傳入的元組,例(255,0,0)代表藍色,對于灰度圖只需傳入灰度值
thickness 線條的粗細,如果給一個閉合圖形設置為-1,那么這個圖形就會被填充,默認值為1
linetype 線條的類型,8連接,抗鋸齒等。默認是8連接。cv2.LINE_AA為抗鋸齒
1.畫線
需要告訴函數這條線的起點和終點。
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
#draw a diagonal blue line with thickness of 5 px
cv2.line(img,(0,0),(260,260),(255,0,0),5)
#為了演示,建窗口顯示出來
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
2.畫矩形
需要告訴函數左上角頂點和右下角頂點的坐標
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
cv2.rectangle(img,(350,0),(500,128),(0,255,0),3)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
3.畫圓
需要指定圓心坐標和半徑大小,可以在上面矩形中畫個圓
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
cv2.rectangle(img,(350,0),(500,128),(0,255,0),3)#矩形
cv2.circle(img,(425,63),63,(0,0,255),-1)#圓,-1為向內填充
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
4.畫橢圓
一個參數是中心點的位置坐標。 下一個參數是和短的度。橢圓沿時方向旋的度。橢圓弧演 時方向始的度和結束度如果是 0 很 360就是整個橢圓。查看 cv2.ellipse() 可以得到更多信息。
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
5.畫多邊形
需要指定每個頂點的坐標,構建一個大小相等于行數X1X2的數組,行數就是點的數目,這個數組必須為int32。
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
pts=np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts = pts.reshape((-1,1,2))
#這里reshape的第一個參數為-1,表明這一維度的長度是根據后面的維度計算出來的
cv2.polylines(img,[pts],True,(0,255,255))
#注意第三個參數若是False,我們得到的是不閉合的線
#為了演示,建窗口顯示出來
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
cv2.polylines() 可以用來畫很多條線。只把想畫的線放在一 個列中將個列傳給函數就可以了。每條線會獨立繪制。會比用 cv2.line() 一條一條的繪制快一些。
6.在圖片上添加文字
需要設置,文字內容,繪制的位置,字體類型、大小、顏色、粗細、類型等,這里推薦linetype=cv2.LINE_AA
~~~
import numpy as np
import cv2
#Create a black image
img = np.zeros((512,512,3),np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
#為了演示,建窗口顯示出來
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.resizeWindow('image',1000,1000)#定義frame的大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
~~~
7.顯示結果可以用以下代碼
~~~
winname='example'
cv2.namedWindow(winname)
cv2.imshow(winname,img)
cv2.waitKey(0)
cv2.destroyAllWindow(winname)
~~~