In [1]:
from Custom.mediahelper import show_image_with_pil # 개발자 정의 모듈
12. 이미지 변형(원근)¶
사다리꼴 이미지 펼치기¶
In [2]:
import cv2
import numpy as np
img = cv2.imread('../Media/images/newspaper.png')
# 변환 후 이미지 크기 정의
width, height = 640, 240
# 원근 변환 좌표 정의
# 입력 이미지에서 변환할 영역의 좌표(4개의 꼭짓점).
# 순서: 왼쪽 위, 오른쪽 위, 오른쪽 아래, 왼쪽 아래.
# 픽셀 좌표로 정의.
src = np.array([[511, 352],[1008, 352],[1122, 584],[455, 594]], dtype = np.float32)
# 변환 후 해당 영역이 매핑될 목표 좌표(사각형).
# (0,0)에서 (width, height)까지 직사각형 형태로 설정
dst = np.array([[0, 0],[width, 0],[width, height],[0, height]], dtype = np.float32)
# 원근 변환을 수행하기 위한 **변환 행렬(matrix)**를 계산.
matrix = cv2.getPerspectiveTransform(src, dst) # matrix 얻음
print(matrix)
# 원근 변환 적용
result = cv2.warpPerspective(img, matrix, (width, height)) # martrix 대로 변환
cv2.imshow('img',img)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
show_image_with_pil(cv2.resize(img, None, fx = 0.5, fy = 0.5), 'img')
show_image_with_pil(result, 'result')
[[ 2.37738740e+00 5.50139232e-01 -1.40849397e+03]
[-2.02650335e-16 2.55422845e+00 -8.99088414e+02]
[-1.18433572e-04 2.74309926e-03 1.00000000e+00]]
'img'
'result'
회전된 이미지 올바로 세우기¶
In [3]:
import cv2
import numpy as np
img = cv2.imread('../Media/images/poker.png')
width, height = 530, 700
src = np.array([[702, 143],[1133, 414],[726, 1007],[276, 700]], dtype = np.float32)
dst = np.array([[0, 0],[width, 0],[width, height],[0, height]], dtype = np.float32)
matrix = cv2.getPerspectiveTransform(src, dst) # matrix 얻음
print(matrix)
result = cv2.warpPerspective(img, matrix, (width, height)) # martrix 대로 변환
cv2.imshow('img',img)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destroyAllWindows()
show_image_with_pil(cv2.resize(img, None, fx = 0.5, fy = 0.5), 'img')
show_image_with_pil(cv2.resize(result, None, fx = 0.5, fy = 0.5), 'result')
[[ 8.60626336e-01 6.58216911e-01 -6.98284706e+02]
[-5.76539879e-01 9.16932428e-01 2.73609658e+02]
[-1.15198062e-05 1.19516280e-04 1.00000000e+00]]
'img'
'result'
'Python > OpenCV' 카테고리의 다른 글
13_2. 이미지 변형(이진화) (0) | 2024.11.18 |
---|---|
13_1. 이미지 변형(이진화) (0) | 2024.11.18 |
11. 이미지 변형(흐림) (0) | 2024.11.18 |
10. 이미지 변형(흑백) (0) | 2024.11.18 |
09. 이미지 회전 (0) | 2024.11.18 |