使用Python和OpenCV的Delaunay三角剖分

使用Python和OpenCV的Delaunay三角剖分,python,opencv,triangulation,delaunay,Python,Opencv,Triangulation,Delaunay,我正在尝试使用Python 3.5.2和OpenCV 3.1进行Delaunay三角剖分。我试图使用函数cv2.cv2.Subdiv2D(rect),但无法向Subdiv对象添加点。我做错了什么 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.

我正在尝试使用Python 3.5.2和OpenCV 3.1进行Delaunay三角剖分。我试图使用函数
cv2.cv2.Subdiv2D(rect)
,但无法向Subdiv对象添加点。我做错了什么

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错误:在copyTo文件/Users/jenkins/miniconda/1/x64/conda bld/work/OpenCV-3.1.0/modules/core/src/copy.cpp的第257行,断言失败(channels()=CV_MAT_CN(dtype))

libc++abi.dylib:以cv::exception:/Users/jenkins/miniconda/1/x64/conda bld/work/opencv-3.1.0/modules/core/src/copy.cpp:257:错误:(-215)channels()=函数copyTo中的cv_MAT_CN(dtype)


进程结束,退出代码134(被信号6:SIGABRT中断)

我可能错了,但不应该错:
point=np.array([[1,1]])
?您这样做的方式是声明一个值为1和1的数组,而不是点数组

编辑:

尝试将点用作元组:

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

来源:

如果我在数组中只有一个点,则没有区别,但你的方法更好,因此我编辑了我的问题。但这并不能解决我的问题谢谢!!终于起作用了。你是怎么想到这个主意的?我一直认为元组和列表的唯一区别在于列表是动态的。我发现opencv的python文档有点缺乏,所以我自己测试了它。列表是动态的,你是对的。但是,请注意,我的解决方案实际上是使用元组作为名为point的列表中的2D点。可以向列表点添加更多点。我将进行编辑以澄清。这里讨论了相同的问题(即,对于cv,它必须是一个元组而不是一个列表)。建议的解决方案是相同的。