2016-05-05 3 views
1

У меня возникла ошибка при попытке использовать функцию boundingRect() в opencv. Что дается список точекpython boundingRect со списком баллов

lists = [] 
for match in enumerate(matches): 
    lists.append(kp2[match.trainIdx].pt) 
x,y,w,h = cv2.boundingRect(lists) 

TypeError: points is not a numpy array, neither a scalar

P/s: Я хочу, чтобы нарисовать прямоугольник вокруг обнаруженного объекта в изображении

Любая помощь ценят

Редактировать

Списки до изменения на np-массив

[(328.0, 227.0), (372.0, 241.0), (366.0, 229.0)]

и после

[[ 328. 227.] [ 372. 241.] [ 366. 229.]]

+1

Использовать массив numpy или скаляр. Все, что вам нужно сделать, это посмотреть сообщение об ошибке – Natecat

+0

'error: (-215) npoints> = 0 && (depth == CV_32F || depth == CV_32S) в функции cv :: pointSetBoundingRect' получил эту ошибку из opencv, it кажется, что функция только читает 1 объект в массиве. –

ответ

1

Я только что точно такой же вопрос. Не удалось решить эту проблему, но вот код, который решил проблему:

points = ([1,1], [3,1], [3,3], [1,4]) 

xx, yy = zip(*points) 
min_x = min(xx); min_y = min(yy); max_x = max(xx); max_y = max(yy) 
bbox = [(min_x, min_y), (max_x, min_y), (max_x, max_y), (min_x, max_y)] 
Смежные вопросы