Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形
OpenCV 中的繪圖函數(shù)
使用 OpenCV 繪制不同幾何圖形,其中包括的函數(shù)有
cv2.line()
cv2.circle()
cv2.rectangle()
cv2.ellipse()
cv2.putText()
以上函數(shù)均需要接受以下參數(shù):
- img:圖片的路徑;
- color:形狀的顏色。以 RGB 為例,需要傳入一個元組,例如:(255,0,0)代表藍色。對于灰度圖只需要傳入灰度值;
- thickness:線條的粗細。如果給一個閉合圖形設置為 -1,那么這個圖形就會被填充。默認值是 1;
- linetype:線條的類型,8 連接,抗鋸齒等。默認情況是 8 連接。cv2.LINE_AA 為抗鋸齒,這樣看起來會非常平滑;
1. 畫直線
要畫一條線,你只需要告訴函數(shù)這條線的起點和終點。我們下面會畫一條從左上方到右下角的藍色線段。
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg")
# shape返回的是一個tuple元組,第一個元素表示圖像的高度,第二個表示圖像的寬度,第三個表示像素的通道數(shù)。
size = img.shape
print size # (1728, 3072, 3)cv2.line(img, pt1=(100, 0), pt2=(3072, 1000), color=(0, 255, 0), thickness=10)# pt1=(x, y) x 表示當前位置與圖片左邊距的距離; y 表示當前位置與圖片上邊距的距離
# pt1, pt2 分別表示當前線的起始點和終點cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()
圖像矩陣的 shape 屬性表示圖像的大小,shape 會返回 tuple 元組,第一個元素表示矩陣行數(shù),第二個元組表示矩陣列數(shù),第三個元素是 3,表示像素值由光的三原色組成。
2. 畫矩形
要畫一個矩形,你需要告訴函數(shù)的左上角頂點和右下角頂點的坐標。
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)
size = img.shape
print size # (1728, 3072, 3)cv2.rectangle(img, pt1=(300, 0), pt2=(500, 150), color=(0, 255, 0), thickness=3)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()
3. 畫圓
要畫圓的話,只需要指定圓形的中心點坐標和半徑大小。我們在上面的矩形中畫一個圓。
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)
size = img.shape
print size # (1728, 3072, 3)cv2.circle(img, center=(400, 60), radius=60, color=(0, 255, 255), thickness=-1)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()
4. 畫橢圓
畫橢圓比較復雜,我們要多輸入幾個參數(shù)。一個參數(shù)是中心點的位置坐標。下一個參數(shù)是長軸和短軸的長度。橢圓沿逆時針方向旋轉的角度。橢圓弧演順時針方向起始的角度和結束角度,如果是 0 和 360,就是整個橢圓。查看 cv2.ellipse() 可以得到更多信息。
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)size = img.shape
print size # (1728, 3072, 3)cv2.ellipse(img, center=(256, 256), axes=(100, 50), angle=0, startAngle=0, endAngle=180, color=(0, 255, 255), thickness=-1)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()
5. 畫多邊形
畫多邊形,需要指點每個頂點的坐標。用這些點的坐標構建一個大小等于行數(shù) X1X2 的數(shù)組,行數(shù)就是點的數(shù)目。這個數(shù)組的數(shù)據(jù)類型必須為 int32。這里畫一個黃色的具有四個頂點的多邊形。
6. 在圖片上添加文字
在圖片上繪制文字,需要設置以下參數(shù):
- 要繪制的文字 text
- 要繪制的位置 org
- 字體類型 fontFace
- 字體大小 fontScale
- 文字的一般屬性,如顏色、粗細、線條的類型等。一般推薦使用 linetype=cv2.LINE_AA
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img, text='OpenCV', org=(10, 100), fontFace=font, fontScale=4, color=(0, 255, 255), thickness=4)
cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()
總結
以上是生活随笔為你收集整理的Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python+OpenCV 图像处理系列
- 下一篇: Python+OpenCV 图像处理系列