2012-08-02 2 views
7

Python 내에서 OpenCV 함수 MinAreaRect2를 호출하려고합니다. OpenCV 2.4.2를 python 2.7 및 numpy 1.6과 함께 사용합니다. I 여기까지 가서 :Python OpenCV Box2D

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 

I 형상의 ndarray하여이 함수를 호출 할 수있다 (N × 2).

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

내가 처음 튜플은 상자의 중심 가정, 두 번째는 너비와 높이를 제공하고, 마지막으로 각이다 : 나는 결과의이 종류를 얻을.

문제는 이것을 설명하는 명확한 참조를 얻을 수 없다는 것입니다. 사실, opencv 문서는 Python에서 함수가 리턴하는 것을 알려줍니다.

나는 official documentation about this function을 발견했으나별로 도움이되지 않습니다.

Python에서 MinAreaRect2의 결과는 정확히 무엇입니까? 더 일반적으로 OpenCV python wrapper에 대한 정확한 문서는 어디서 구합니까? 당신이 연결되는 문서에 명시된 바와 같이

답변

11

은 ++ 인터페이스 cvMat 같이 원래 C로부터 기본 데이터 형식을 사용 cv 인터페이스이었다 cvSeq 등.

나중에 더 나은, 고급 및 더 간단한 모듈 cv2 인터페이스로 이동되었습니다. 이 경우, 모든 것은 Numpy 배열 또는 원시 파이썬 데이터 유형으로 반환됩니다.

리턴 된 튜플은 cvBox2D의 인수와 동일한 인수를 갖습니다. 서로 다른 파이썬 래퍼의 차이점에 대한 자세한 내용은 여기를 참조하십시오. What is different between all these OpenCV Python interfaces?

여기에 가정이 맞습니다. 그 값들은 여러분이 언급 한 것과 정확히 일치합니다.

회전 된 사각형을 그리려면 직사각형의 4 개의 정점이 필요합니다. 이를 위해서는 문서에서 볼 수없는 기능이 필요합니다. 즉, cv2.cv.BoxPoints() (OpenCV 2.4.3이 출시되면 문서에 포함될 것입니다.)

이 문서에서 회전 된 사각형을 그리는 방법에 대한 예를 찾을 수 있습니다 귀하의 답변에 대한 Rotated Rectangle

enter image description here

+0

도움을 주셔서 감사합니다. –

+1

어떻게 든 실망 스럽지만 OpenCV 3.0까지 BoxPoint를 문서에 추가하기위한 요청을 [연기 한] 것으로 보입니다 (http://code.opencv.org/issues/2023). –

1

는 MinAreaRect2는 Box2D object 반환이 제대로 가정으로 here을 설명

CvBox2D 객체는, 중심, 크기 및 각도에 의해 정의됩니다.

일반적으로 파이썬 래퍼 문서는 다소 부족합니다. 최선의 방법은 C++ 문서를 참조하고 소스 코드를 읽는 것입니다. www.docs.opencv.org

이전 파이썬 모듈 사용 OpenCV의 파이썬 래퍼 문서가 동일한 사이트에서 정상적인 문서와 함께 유지된다

+1

감사합니다. 그러나 파이썬 함수는 Box2D 객체가 아니라 파이썬 튜플을 반환합니다. 그래서 튜플 요소와 C++ Box2D 구조체 사이의 관계에 대해 궁금해했습니다.소스 코드를 살펴 보았지만 대답을 얻을 수있는 곳을 찾을 수 없었습니다. opencv 라이브러리가 실제로 어떻게 파이썬에 싸여 있는지 이해하는 데 어려움이 있습니다. 이것에 대한 어떤 암시라도 매우 환영받을 것입니다. –

+0

이 게시물은 매우 명확합니다. http://opencvpython.blogspot.com.es/2012/06/contours-2-brotherhood.html – Antoni