2013-07-10 24 views
8

Mam następujący kod:OpenCV cv2.fillPoly vs. cv2.fillConvexPoly: oczekiwany typ danych dla tablicy wierzchołków wielokątów?

import cv2 
import numpy 

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

Jeśli używam cv2.fillConvexPoly tak:

cv2.fillConvexPoly(ar, triangle, 1) 

następnie wyniki są zgodnie z oczekiwaniami. Jeśli jednak spróbuję:

cv2.fillPoly(ar, triangle, 1) 

to otrzymam nieudane potwierdzenie. To wydaje się być identyczne z asercją, która się nie powiedzie, jeśli używam tablicy numpy dla cv2.fillConvexPoly, która nie ma dtype numpy.int32. Czy cv2.fillPoly i cv2.fillConvexPoly oczekują różnych typów danych dla ich drugiego argumentu? Jeśli tak, co powinienem używać dla cv2.fillPoly?

Odpowiedz

15

cv2.fillPoly i cv2.fillConvexPoly używać różnych typów danych dla swoich tablic punktowych, ponieważ fillConvexPoly zwraca tylko jeden wielokąt i rysuje (Python) Lista nimi. Tak więc, są poprawne sposoby wywoływania tych dwóch metod. Jeśli miał square i hexagon tablice momencie, można użyć

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

wyciągnąć wszystkie trzy.

Powiązane problemy