Python OpenCV框2d

2024-10-05 13:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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包装器的精确文档?


Tags: 函数文档numpyreturndefstorageoutopencv
2条回答

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

enter image description here

如链接到的文档中所述,minarealect2返回一个Box2D object

CvBox2D对象由其中心、大小和角度定义,正如您正确假设的,如here所述。

一般来说,Python包装器的文档相当糟糕。最好的办法是引用C++文档并读取源代码。

相关问题 更多 >

    热门问题