繁体   English   中英

Python OpenCV Box2D

[英]Python OpenCV Box2D

我试图从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

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

((476.5, 604.5), (951.0, 1207.0), -0.0)

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

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

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

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

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发布时,它将存在于文档中。)

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

在此输入图像描述

如您链接的文档中所述,MinAreaRect2返回Box2D对象

甲CvBox2D目的是通过它的中心,大小和角度定义的,如你正确地假设,如所描述这里

一般来说,Python包装器的文档相当差。 您最好的选择是参考C ++文档并阅读源代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM