2014-12-02 2 views
0

좌표가있는 배열 (2D)을 가지며 다른 사각형의 새 좌표를 계산하려고합니다. 나는 두 사변형의 모서리를 알고 있습니다.좌표가있는 배열의 원근 변환

그래서 예를 들어, 기존의 사각형 모서리 좌표는

topleft(25,25), Topright(200,20), Botomleft(35,210), Botomright(215,200) 

새로운 사각형 :

Topleft(-50,50), Topright(50,50), Botomleft(-50,-50), Botomright(-50,-50) 

OpenCV의 (CV2)의 특정 기능이 있습니까 그렇게, 심지어 공식에 .

나는 꽤 오랫동안 찾고 있는데, 매트릭스 계산이나 함수를 찾으면 전체 이미지 나 배열을 변형시킬 수있을 것 같습니다.

답변

1

만약 내가 제대로 이해하고는, OpenCV의 당신이 필요가 있습니다

첫째, 변환 계산 매트릭스 :

import cv2 
import numpy as np 
src = np.array(((25, 25), (200, 20), (35, 210), (215, 200)), dtype=np.float32) 
dest = np.array(((-50, -50), (50, -50), (-50, 50), (50, 50)), dtype=np.float32) 
mtx = cv2.getPerspectiveTransform(src, dest) 

당신은 내가 dest의 방향이 일치 src 년대를 만들기 위해 자유를했다 알 하나는 변환을 계산하기 전에 (거꾸로 된 위와 아래).

이제 매트릭스는 (우리의 경우 2D를) 점의 배열을 변환하는 데 사용할 수 있습니다

original = np.array([((42, 42), (30, 100), (150, 75))], dtype=np.float32) 
converted = cv2.perspectiveTransform(original, mtx) 

결과 : 최종 조언으로

>>> converted 
>>> array([[[-41.06365204 -40.27705765] 
     [-49.48046112 -8.70405197] 
     [ 18.60642052 -19.92881393]]]) 

가의 모양을 유의하시기 바랍니다 입력 점 배열 original : 배열은 3D 배열이어야합니다. here을 발견했습니다.