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 = (400, 300, 3)
# 결과의 이미지를 넣을 행렬 , 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개의 점을 만든다)
코드를 실행시켜면, 내가 아까 정해둔 사이즈에 네개의 점영역 만큼의 이미지가 합쳐진다.
'IT 프로그래밍 관련 > OpenCV' 카테고리의 다른 글
OpenCV HSV 변경 (0) | 2021.05.25 |
---|---|
OpenCV AffineTransform, homography(perspective)Transform (0) | 2021.04.23 |
OpenCV 이미지 Transformations ( rotation, translation ) (0) | 2021.04.22 |
OpenCV threshold, 이미지형태 변환(dilate,erode, opening, closing) (0) | 2021.04.22 |
OpenCV 비디오파일 열기, 내 캠으로 비디오파일 저장 (0) | 2021.04.21 |
댓글