본문 바로가기
IT 프로그래밍 관련/OpenCV

OpenCV Persperctive 2 (마우스로 좌표 찍기)

by 지나는행인 2021. 4. 26.
728x90

이번에는 좌표를 수기로 적는 것이 아닌, 

 

이미지를 보고 그 위에 원하는 곳을 클릭하여 그 클릭한 곳을 좌표로 설정하여 , 

 

이미지를 확대해보려한다.

 

아래는 그 예제 코드이다.

 

먼저 마우스 관련 함수이다.

위의 함수를 이용하였다.

 

코드 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import cv2
import numpy as np
from utils import get_four_points
 
img_src = cv2.imread('data/images/book1.jpg')
 
# 결과물 이미지 사이즈 
dst_size = (4003003)
 
# 결과의 이미지를 넣을 행렬 , 0행렬
img_dst = np.zeros(dst_size, np.uint8)  # 빈 행렬만들기. 0
 
#cv2.imshow('dst', img_dst)
 
 
 
# 우리가 원본이미지로부터는 마우스 클릭으로 4개의 점을 가져온다.
# 새로만들 이미지에서는, 위의 원본 이미지 4개의 점과 매핑할 점을 잡아줘야한다.
 
# cv2.imshow('image',img_src)
 
# 함수를 호출하여 이미지 작업한다.
points_src = get_four_points(img_src) # 함수호출
 
points_dst = np.array([ 0,0, dst_size[1],0
            dst_size[1],dst_size[0], 0,dst_size[0] ], dtype=float)
 
points_dst = points_dst.reshape(4,2)
 
h, status = cv2.findHomography(points_src, points_dst)
 
img_dst = cv2.warpPerspective(img_src, h, (dst_size[1],dst_size[0]) )
 
cv2.imshow('result',img_dst)
 
cv2.waitKey()
cv2.destroyAllWindows()
cs

 

내가 변환시키고자 하는 이미지를 가져와 , 새로운 이미지행렬을 만들어 , 덮어씌우 ㅓ, 

 

이미지를 변환시킨다.  ( 마우스로 원하는 영역 설정 , 왼쪽 위부터 오른쪽으로 돌면서 4개의 점을 만든다)

* 네개의 포인트를 찍고 

코드를 실행시켜면, 내가 아까 정해둔 사이즈에 네개의 점영역 만큼의 이미지가 합쳐진다.

댓글