我试图从python中调用OpenCV函数minarealect2。 我将OpenCV 2.4.2与python2.7和numpy 1.6结合使用。 我走了这么远:
import cv
def nda2ipl(arr, dtype=None):
return cv.fromarray(np.ascontiguousarray(arr, dtype=dtype))
def min_area_rect2(points):
storage = cv.CreateMemStorage()
cv_points = nda2ipl(points.reshape((-1, 1, 2)))
out = cv.MinAreaRect2(cv_points, storage)
return out
我可以用一系列的形状(N x 2)调用这个函数。我得到这样的结果:
((476.5, 604.5), (951.0, 1207.0), -0.0)
我假设第一个元组是盒子的中心,第二个元组是宽度和高度,最后一个元组是角度。
问题是我找不到明确的参考资料来说明这一点。实际上,opencv文档告诉我函数在Python中返回什么。
我找到了official documentation about this function但这不是很有帮助。
python中minarealect2的输出究竟是什么? 一般来说,在哪里可以得到关于OpenCV python包装器的精确文档?
OpenCV Python包装器文档与普通文档一起保存在同一个站点(www.docs.OpenCV.org)中
早期的Python模块使用的是{{CD1}}接口,它使用原始的C++接口的数据类型,如CVMAT、CVSEQ等
后来,它被转移到更好、更高级、更简单的模块
cv2
接口。在它中,所有内容都以Numpy数组或本地python数据类型返回。这里,返回的元组与cvBox2D的元组具有相同的参数。您可以在这里找到更多详细信息不同python包装之间的区别:What is different between all these OpenCV Python interfaces?
在这里,你的假设是正确的。这些值正是你提到的。
如果要绘制旋转矩形,则需要矩形的4个顶点。为此,您需要一个在文档中从未出现过的函数,即cv2.cv.BoxPoints()(但不用担心,当OpenCV 2.4.3发布时,它将出现在文档中)
在本文中,您可以找到一个关于如何绘制旋转矩形的示例:Rotated Rectangle
如链接到的文档中所述,minarealect2返回一个Box2D object:
CvBox2D对象由其中心、大小和角度定义,正如您正确假设的,如here所述。
一般来说,Python包装器的文档相当糟糕。最好的办法是引用C++文档并读取源代码。
相关问题 更多 >
编程相关推荐