可以同时画多个独立的多边形,一个或多个多边形的坐标点放在一个或多个numpy的数组中,而这个数组需要放入一维list中,但即使只有一个numpy的坐标点数组也必须有一个list框,下面第一行
cv2.polylines(Img,[points_arr],2,(0,0,255))
cv2.polylines(Img,[points_arr,points_arr1],2,(0,0,255))
参考:http://t.zoukankan.com/Ph-one-p-12082692.html
import cv2
import numpy as np
img=np.zeros((500,750,3),np.uint8)
points_arr = np.array([100,100,200,200,300,200,400,100],np.int).reshape(1,4,2)
print(points_arr)
Img = cv2.polylines(img,points_arr,True, (0,0,255)) # 最后的参数是作图的颜色bgr
cv2.imshow('img',Img)
cv2.waitKey(0)
points_arr = np.array([100, 100, 200, 200, 300, 200,
400, 100, 400, 200, 500, 400], np.int).reshape(2, 3, 2)
Img = cv2.fillConvexPoly(img,[points_arr], (0,0,255))
两个的函数的参数必须是numpy的数组。
>cv2.fillPoly()函数可以用来填充任意形状的图型,可以一次填充多个图型.
>cv2.fillPoly()填充的点矩阵放入[]中,而另一种不用
>cv2.fillConvexPoly()函数==‘只能’==用来填充凸多边形,但实验时发现两种方式都能画任意多边形
import cv2
import numpy as np
img=np.zeros((500,750,3),np.uint8)
# cv2.line(img,(10,10),(200,200),(0,255,0),8)#绿色,3个像素宽度
# points_arr = np.array([[100,100],[200,100],[200,200],[170,130]])
points_arr = np.array([[100,0],[75,75],[0,100],[75,125],[100,200],[125,125],[200,100],[125,75]]) ## shape是(4,2)
cv2.fillConvexPoly(img,points_arr, (0,0,255))
# cv2.fillPoly(img,[points_arr],(0,0,255))
# Img = cv2.polylines(img,[points_arr], 2,(0,0,255))
cv2.imshow('ing',img)
cv2.waitKey(0)