2013-02-09 4 views
-2

나는 사변형의 배열을 가지고 있으며, 각 항목은 이미지의 사각형의 네 좌표를 포함합니다. 예를 들어 는 :목록에서 특정 데이터 제거 - 파이썬

[ 
    array([ 
     [[599, 1]], 
     [[173, 109]], 
     [[202, 252]], 
     [[445, 314]] 
    ]), 
    array([ 
     [[1, 1]], 
     [[1, 126]], 
     [[57, 104]], 
     [[48, 19]] 
    ]) 
] 

나는 프로그램이 배열에서 가장 높은 광장을 찾고 싶어요.

는 파이썬에서 초보자, 그래서 나는 명확한 답 : 사변형의 '중심'의 여러 정의가 주석에 언급 한 바와 같이

+0

그런 중첩 된 데이터 구조에 어떻게 도달 했습니까? '[599, 1], [173, 109], ...]와 같은 것이 더 논리적 인 형태라고 생각할 것이다. –

+0

네가 사각형을 가진 것처럼 보이지 않는다. 일반 사변형과 비슷합니다. – begemotv2718

+0

Joel, 맞아,하지만이 배열을 만들지는 않았어. 그리고 Bedemotv2718, 너도 똑같아. 사각형이 아니야. ... thx – Yehuda

답변

1

을 얻을 기꺼이 것입니다. 나는 vertex centroid이라고 가정 할 것입니다. 좌표는 4 모서리 좌표의 산술 평균입니다. 따라서 쉽게 계산할 수 있습니다.

quadrilaterals = [array([[599, 1]], 
         [[173, 109]], 
         [[202, 252]], 
         [[445, 314]]), 
        array([[1, 1]], 
         [[1, 126]], 
         [[57, 104]], 
         [[48, 19]])] 

def centroid_y(polygon): 
    return polygon.mean(0)[1] # assuming numpy arrays 

그런 다음 무게 중심을 키로 사용하십시오.

print max(quadrilaterals, key=centroid_y) 
+0

'point_list'를 역순으로 정렬하는 대신'max (point_list, key = centroid_y)'를 사용할 수 있습니다. 그리고 만약 그것들이'numpy' 배열이라면,'point.mean (0)'을 사용하여 포인트의 평균을 얻을 수 있습니다. –

+0

@tobias_k 고마워, 나는 방금 max를 사용하는 것에 대해 깨달았다. 예, 그들은 numpy 배열이라고 생각한다. (정규 파이썬 배열은리스트를 포함 할 수 없기 때문에 나는 배열 부분을 무시했다.) – Stuart

+0

나는 성공한다 .. 프로 블램은 배열은 numpy 배열이고 일반 배열 (list)로 변환해야합니다. – Yehuda