Python OpenCV Box2D

Nic*_*bey 8 python opencv image-processing

我试图从python中调用OpenCV函数MinAreaRect2.我使用OpenCV 2.4.2与python 2.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
Run Code Online (Sandbox Code Playgroud)

我可以用形状的ndarray(N x 2)来调用这个函数.我得到了这样的结果:

((476.5, 604.5), (951.0, 1207.0), -0.0)
Run Code Online (Sandbox Code Playgroud)

我假设第一个元组是盒子的中心,第二个元素是宽度和高度,最后一个是角度.

问题是我无法得到明确的参考说明.实际上,opencv文档告诉我函数在Python中返回什么.

我找到了关于这个功能官方文档,但这不是很有用.

python中MinAreaRect2的输出究竟是什么?更一般地说,在哪里可以获得有关OpenCV python包装器的精确文档?

Abi*_*n K 12

OpenCV Python包装器文档与同一站点www.docs.opencv.org中的常规文档一起保存

早期的Python模块使用的是cv接口,它使用原始C++接口的原生数据类型,如cvMat,cvSeq等.

后来它被转移到更好,更先进和更简单的模块cv2接口.在其中,所有内容都返回为Numpy数组或本机python数据类型.

这里,返回的元组具有与cvBox2D相同的参数.你可以在这里找到不同python包装器之间差异的更多细节:所有这些OpenCV Python接口有什么不同?

在这里,您的假设是正确的.这些值完全符合您的提及.

如果要绘制旋转的矩形,则需要矩形的4个顶点.为此,您需要一个在文档中从未见过的函数,即cv2.cv.BoxPoints()(但不要担心,当OpenCV 2.4.3发布时,它将存在于文档中.)

您可以在本文中找到有关如何绘制旋转矩形的示例:旋转矩形

在此输入图像描述