2014-09-25 6 views
0

Мне нужно рассчитать площадь, ограниченную контурной линией. Я использую Matplotlib, чтобы получить вершины линии контура, но я не в состоянии преобразовать их в правильный вход для метода contourArea в OpenCV:Рассчитать площадь контура с opencv для контуров, созданных matplotlib

Z = z_func(X, Y, Ql, k[i,j], B) 
cs = plt.contour(X, Y, Z,[IncT]) 
v = cs.collections[0].get_paths()[0].vertices 
xy = [] 
for vv in v: 
    xy.append(vv[0]) 
cnt = np.array(xy) 
area = cv2.contourArea(cnt) 

Я получаю эту ошибку: ...... \ opencv-2.4.9.1 \ modules \ imgproc \ src \ contours.cpp: 1904: ошибка: (-215) contour.checkVector (2)> = 0 & & (contour.depth() == CV_32F || contour.depth () == CV_32S) в функции сорта :: contourArea

: EOF при чтении строки

Может кто-нибудь мне помочь? Заранее спасибо!!!

ответ

0

И наконец, я не использовал метод cv2.contourArea. Получите только Y-составляющую вершин, суммируйте их абсолютные значения и умножьте на размер сетки:

x = arange(-1.0,10.0,0.05) 
y = arange(-1.0,1.0,0.05) 

X,Y = meshgrid(x, y) # grid of point 

cs = plt.contour(X, Y, Z,[IncT]) 
p = cs.collections[0].get_paths()[0] 
v = p.vertices 
y = v[:,1] 
s[i,j]=sum(abs(y))*0.05 
Смежные вопросы