我們已經在前面的章節學會如何用cv2.line
函式畫出一條直線,但我們在做比較複雜的圖像處理時不可能只用到直線,有時候我們亦會需要用折線畫出多邊形,這時候折線繪圖函式——cv2.polylines
就派上用場了。
import numpy as np
import cv2
img = np.zeros((480, 640, 3), np.uint8)
img.fill(128)
在使用cv2.polylines
函式時,通常會用Numpy的np.array
定義陣列和reshape
功能設定形狀,所以和上一章一樣,我們把cv2.polylines
需要的參數用Numpy的函式先設定好,這樣也比較便於理解:
# 頂點座標
pt = np.array([[200, 200], [300, 100], [400, 200], [400, 400], [200, 400]], np.int32)
# 用reshape轉為(-1, 1, 2)的陣列
pt = pts.reshape((-1, 1, 2))
# 顏色
color = (0, 255, 0)
設定完之後我們把參數寫進去試試看:
# cv2.polylines(影像, 頂點座標, 封閉線, 顏色, 寬度)
cv2.polylines(img, [pt], True, color, 2)
頂點座標就是多邊形中每個點的座標,這個參數必須要是一個形狀為 (頂點數量, 1, 2) 的陣列,所以在把pt
變數放進cv2.polylines
函數之前,要先用reshape
調整一下。
封閉線參數是一個Boolean值,如果設定True
的話,函式就會把尾端座標點和起始座標點連接起來,形成一個閉鎖式的多邊形,如果設定為False
就是不接起封閉線。
印出來看看吧:
cv2.imshow('polylineImage', img)
cv2.waitKey(0)
cv2.destroyAllWindows()