PYTHON 프로그래밍

본문 바로가기
사이트 내 전체검색


PYTHON 프로그래밍
PYTHON 프로그래밍

19. 기하학적 변환

페이지 정보

작성자 관리자 댓글 0건 조회 4,543회 작성일 19-09-28 21:33

본문

19. 기하학적 변환

기하학적 변환

영상이나 이미지 위에 기하학적으로 변환하기 위해 사용합니다. 영상이나 이미지를 펼치거나 좁힐 수 있습니다.
WarpPerspective의 경우 4개의 점을 매핑합니다. (4개의 점을 이용한 변환)
WarpAffine의 경우 3개의 점을 매핑합니다. (3개의 점을 이용한 변환)

 


소스 :


import numpy as np
import cv2

src = cv2.imread("image/harvest.jpg", cv2.IMREAD_COLOR)
height, width, channel = src.shape

srcPoint=np.array([[300, 200], [400, 200], [500, 500], [200, 500]], dtype=np.float32)
dstPoint=np.array([[0, 0], [width, 0], [width, height], [0, height]], dtype=np.float32)
matrix = cv2.getPerspectiveTransform(srcPoint, dstPoint)

dst = cv2.warpPerspective(src, matrix, (width, height))

cv2.imshow("dst", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

설명 :

 

srcPoint=np.array([[300, 200], [400, 200], [500, 500], [200, 500]], dtype=np.float32)
dstPoint=np.array([[0, 0], [width, 0], [width, height], [0, height]], dtype=np.float32)

원본 이미지에서 4점 변환할 srcPoint와 결과 이미지의 위치가 될 dstPoint를 선언합니다.

좌표의 순서는 좌상, 우상, 우하, 좌하 순서입니다. numpy 형태로 선언하며, 좌표의 순서는 원본 순서와 결과 순서가 동일해야합니다.
dtype을 float32 형식으로 선언해야 사용할 수 있습니다.

 

 

matrix = cv2.getPerspectiveTransform(srcPoint, dstPoint)

기하학적 변환을 위하여 cv2.getPerspectiveTransform(원본 좌표 순서, 결과 좌표 순서)를 사용하여 matrix를 생성합니다.

다음과 같은 형식으로 매트릭스가 생성됩니다.

 


[[-2.88000000e+01 -9.60000000e+00  1.05600000e+04]
 [-4.44089210e-15 -2.15400000e+01  4.30800000e+03]
 [-1.77809156e-17 -2.00000000e-02  1.00000000e+00]]

 


dst = cv2.warpPerspective(src, matrix, (width, height))

cv2.warpPerspective(원본 이미지, 매트릭스, (결과 이미지 너비, 결과 이미지 높이))를 사용하여 이미지를 변환할 수 있습니다.

저장된 매트릭스 값을 사용하여 이미지를 변환합니다.

이외에도, 보간법, 픽셀 외삽법을 추가적인 파라미터로 사용할 수 있습니다.

 

 

결과 :

 

 

harvest.jpg 

1.JPG 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.