Выпуклая оболочка в питоне для заданного набора точек?

Я пытаюсь найти выпуклый корпус, чтобы получить доступ к библиотеке opencv, и код:

import cv2
import numpy as np
a = [[0, 0], [1, 0], [0, 1], [1, 1], [0.5, 0.5]]
cv2.convexHull(np.array(a))

Я получаю сообщение об ошибке -

Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    cv2.convexHull(np.array(a))
error: C:\projects\opencv-python\opencv\modules\imgproc\src\convhull.cpp:137: error: (-215) total >= 0 && (depth == 5 || depth == 4) in function cv::convexHull

Как это исправить?

1 ответ

Решение

Суть в том, что код C++ ожидает "двухканальный или трехканальный массив с плавающей запятой, где каждый элемент представляет собой двухмерный / трехмерный вектор", который в Python/NumPy преобразуется в трехмерный массив.

import cv2
import numpy as np
a = [[0, 0], [1, 0], [0, 1], [1, 1], [0.5, 0.5]]
cv2.convexHull((a,dtype='float32'))

Источник: - http://answers.opencv.org/question/252/cv2perspectivetransform-with-python/

Другие вопросы по тегам