簡體   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