一、學習目標
- 了解如何使用line方法
- 了解如何使用rectangle方法
- 了解如何使用ellipse方法
如有錯誤歡迎指出~
二、了解OpenCV的繪圖方法
2.1 了解直線繪圖方法
我們在前兩節中有了解使用OpenCV中的矩形繪制,接下來我們了解一下更多的圖形繪制方法。我們在OpenCV中若需要繪制直線需要使用line方法,line方法的原型如下:
cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
- 其中img表示需要在哪一張圖片上進行繪圖
- pt1表示起始點位置
- pt2表示終點位置
- color表示需要繪制的顏色
- thickness表示需要繪制的線段寬度
- lineType表示線段的類型,可以為8、 4以及CV_AA shift表示坐標點的小數點位
我們先創建一張圖片:
import cv2
import numpy as npimg=np.zeros((400,400,3), np.uint8)
以上創建了一張400*400的3通道圖片數據,并且將圖片顏色賦予為純黑。我們可以顯示一下:
cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()
隨后我們使用line方法在當前圖片上進行繪圖。
cv2.line(img,(0,0),(400,400),(255,0,0),2)
以上使用line方法,傳入img表示在img圖片上進行繪圖,繪圖的起始點位置為(0,0),終點位置是(400,400),然后繪制的顏色純白色(255,255,255),線段粗細為2個單位。我們來看一下繪制的效果:
我們可以更改rgb值對線段的顏色進行更改:
cv2.line(img,(0,0),(400,400),(124,252,0),2)
以上改為黃青色,結果如下:
再試試更改繪制的起始坐標與終點坐標:
cv2.line(img,(200,200),(350,350),(124,252,0),2)
2.2 了解矩形繪圖方法
矩形繪圖我們在前兩節有過了了解,使用的是rectangle方法。rectangle方法與line方法參數類似,參數都是接收一個圖片、起始繪制坐標、終點坐標、繪制顏色、繪制線段粗細。代碼如下:
cv2.rectangle(img,(384,0),(350,350),(0,255,0),3)
以上方法在img圖片上繪制矩形,起始坐標是(384,0)、終點坐標是(350,350),繪制顏色是(0,255,0),線段粗細為3。結果如下:
2.3 了解圓形繪圖方法
在opencv中繪制圓形需要使用circle方法,circle方法的參數和直線line方法、矩形rectangle方法所接收的參數有所區別。circle方法的原型如下:
cv2.circle(img, center_coordinates, radius, color, thickness)
- circle方法接收img作為圖片參數
- center_coordinates為圓的中心坐標
- radius是圓形的半徑
- color表示繪制圓形的顏色
- thickness表示線段的粗細
代碼如下:
cv2.circle(img,(200,200),63, (0,0,255),1)
以上代碼img為需要繪制的圖片,(200,200)為繪制的中心坐標,63為繪制的半徑,(0,0,255)為繪制的顏色,1為線段的粗細。
那如何進行形狀的填充呢?只需要將線段的粗細1改為負一就可以將這個原型給填充顏色。
cv2.circle(img,(200,200),63, (0,0,255),-1)
結果如下:
其實我們的矩形把線段改為-1也可以進行填充:
cv2.rectangle(img,(384,0),(350,350),(0,255,0),-1)
我們不僅可以畫圓形也可以畫橢圓,橢圓使用ellipse方法,ellipse原型如下:
cv2.ellipse(image, centerCoordinates, axesLength, angle, startAngle, endAngle, color [, thickness[, lineType[, shift]]])
- image為繪制的圖像
- centerCoordinates為橢圓的中心坐標
- axesLength有兩個變量,包含橢圓長軸和短軸
- angle為橢圓的旋轉角度
- startAngle為橢圓弧的起始角度
- endAngle為橢圓弧的終止角度
- color為繪制顏色
- thickness為繪制的線段粗細
- lineType為邊界類型
- shift為中心坐標中的小數位
代碼為:
cv2.ellipse(img, (200, 200), (170, 130), 0, 0, 360, (255, 255, 255), 3)
結果為:
該系列首發于ebaina
三、總結
- 了解使用line方法繪制直線
- 了解使用rectangle方法繪制矩形
- 了解使用ellipse方法繪制原型