2017-02-01 38 views
2

Я пытаюсь выполнить триангуляцию Delaunay с использованием Python 3.5.2 и OpenCV 3.1. Я пытаюсь использовать функцию cv2.cv2.Subdiv2D(rect), но я не могу добавить точку в объект Subdiv. Что я делаю не так?Триангуляция Delaunay с использованием Python и OpenCV

import numpy as np 
import cv2 

point = np.array([[1, 1]]) 
rect = (0, 0, 10, 10) 

# Create an instance of Subdiv2D 
subdiv = cv2.Subdiv2D(rect[0]) 
subdiv.insert(point) 

Он бросает это сообщение:

OpenCV Ошибка: не удалось Assertion (каналы() == CV_MAT_CN (DTYPE)) в CopyTo, файл/Users/Jenkins/miniconda/1/64/conda- bld/work/opencv-3.1.0/modules/core/src/copy.cpp, строка 257

libC++ abi.dylib: завершение с неперехваченным исключением типа cv :: Исключение:/Пользователи/jenkins/miniconda /1/x64/conda-bld/work/opencv-3.1.0/modules/core/src/copy.cpp:257: ошибка: (-215) channels() == CV_MAT_CN (dtype) в функции copyTo

Процесс завершен с кодом выхода 134 (прерывается сигналом 6: SIGABRT)

ответ

1

Возможно, я ошибаюсь, но не должно быть: point = np.array([[1, 1]])? То, как вы делаете вы, объявляет массив со значениями 1 и 1, а не массив точек.

Edit:

Попробуйте использовать очки в качестве кортежей:

points_list = [] 
points_list.append((1,1)) 

Источник: http://www.learnopencv.com/delaunay-triangulation-and-voronoi-diagram-using-opencv-c-python/

+0

нет никакой разницы, если у меня есть только один пункт в массиве, но ваш подход лучше поэтому я редактировал свой вопрос. Но это не решает мою проблему. – hory

+1

Отредактировано решение – NAmorim

+0

Спасибо! Наконец он работает. Как вы поняли эту идею? Я всегда думал, что только разница между кортежами и списками состоит в том, что списки являются динамическими. – hory

 Смежные вопросы

  • Нет связанных вопросов^_^