2013-07-10 159 views
8

我有以下代碼:OpenCV cv2.fillPoly vs cv2.fillConvexPoly:多邊形頂點數組的預期數據類型?

import cv2 
import numpy 

ar = numpy.zeros((10,10)) 
triangle = numpy.array([ [1,3], [4,8], [1,9] ], numpy.int32) 

如果我使用cv2.fillConvexPoly像這樣:

cv2.fillConvexPoly(ar, triangle, 1) 

那麼結果符合市場預期。但是,如果我嘗試:

cv2.fillPoly(ar, triangle, 1) 

然後我得到一個失敗的斷言。這似乎是相同的斷言失敗,如果我使用numpy陣列cv2.fillConvexPoly沒有dtype numpy.int32cv2.fillPolycv2.fillConvexPoly期望第二個參數使用不同的數據類型嗎?如果是這樣,那麼cv2.fillPoly應該使用什麼?

回答

15

cv2.fillPolycv2.fillConvexPoly使用不同的數據類型爲他們點陣列,因爲fillConvexPoly只消耗一個多邊形和吸引過來的(蟒蛇)名單。因此,

cv2.fillConvexPoly(ar, triangle, 1) 
cv2.fillPoly(ar, [triangle], 1) 

是調用這兩種方法的正確方法。如果你有squarehexagon點陣列,您可以使用

cv2.fillPoly(ar, [triangle, square, hexagon], 1) 

繪製所有三個。

相關問題