當我們使用折線函式cv2.polylines
畫出多邊形的時候,多邊形的內部通常都是空心的,如果我們想要畫出實心填滿的多邊形,就需要用到一個和cv2.polylines
相似卻不盡相同的繪圖函式——cv2.fillPoly
。
import numpy as np
import cv2
img = np.zeros((480, 640, 3), np.uint8)
img.fill(128)
和cv2.polylines
差不多,cv2.fillPoly
的參數設置同樣需要頂點座標,所以我們沿用上一章的設定就好:
# 頂點座標
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.fillPoly
的內部參數不用加上封閉線的True/False
和線條寬度,所以只需要設定底圖、頂點座標和顏色就好了。
# cv2.fillPoly(影像, 頂點座標, 顏色)
cv2.fillPoly(img, [pt], color)
印出來看看吧:
cv2.imshow('fillPolyImage', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
你會發現多邊形的內部確實從空心變成實心了!
學會這兩個函式之後,如果出現需要用折線畫出多邊形的情況時,就可以依照自己的需求選擇適合的函式了。