OpenCV 좌표계를 직교 좌표계로 변환하는 Python 코드OpenCV/OpenCV 강좌2023. 4. 13. 21:07
Table of Contents
반응형
OpenCV에서 사용하는 좌표계를 직교 좌표계로 변환하는 예제입니다.
2023. 4. 13 최초작성
OpenCV의 좌표계는 아래 그림처럼 왼쪽 위가 (0, 0)이고 오른쪽으로 갈수록 x좌표가 증가하며 아래로 내려갈수록 y좌표가 증가합니다.
자세한 내용은 다음 포스트를 참고하세요.
OpenCV Python 그리기 예제 1. OpenCV의 좌표계
https://webnautes.tistory.com/580
수학에서 접한 좌표계는 직교 좌표계로 보통 왼쪽 아래에 (0,0)이 주어지며 오른쪽으로 갈수록 x좌표가 증가하고, 위로 올라갈수록 y좌표가 증가합니다.
OpenCV의 좌표계를 직교 좌표계로 변환하는 코드를 간단히 작성해봤습니다. 화면 중앙에 (0,0)이 위치하며 오른쪽으로 갈 수록 x좌표가 증가하고 위로 갈수록 y좌표가 증가합니다.
실행후 화면 중앙에 보이는 파란점이 (0,0)이며 주위에 마우스로 클릭하면 해당 좌표가 출력됩니다.
전체 코드입니다.
import cv2 import numpy as np def mouse_event(event, x, y, flags, param): global cx,cy, end if event == cv2.EVENT_FLAG_LBUTTON: cx = x cy = y end = np.array((cx,cy)) img_color = np.zeros((800,800,3), dtype=np.uint8) h,w,c = img_color.shape cx=0 cy=0 img = img_color.copy() cv2.circle(img, (w//2, h//2), 10, (255, 0, 0), 2) start = np.array((w//2,h//2)) end = None while(1): if not end is None: cv2.circle(img, (cx, cy), 5, (0, 255, 0), 2) cv2.line(img, (w//2, h//2), (cx, cy), (255,255,255), 1) vector = end # 왼쪽 위가 (0,0)인 좌표계를 화면 중앙이 (0,0)이 되도록 바꾸어 줍니다. vector[0] = vector[0] - w/2 vector[1] = -vector[1] + h/2 cv2.putText(img, str(vector), (cx+10,cy+10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 1) end = None cv2.imshow('test', img) cv2.setMouseCallback("test", mouse_event) key = cv2.waitKey(1) if key == 27: #esc key break |
반응형
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
간단히 구현한 RTSP 재접속 및 비디오 다시 재생하는 OpenCV 코드 (0) | 2023.10.07 |
---|---|
OpenCV Python 그리기 예제 1. OpenCV의 좌표계 (0) | 2023.04.13 |
OpenCV Python - 이미지를 정사각형이 되도록 패딩(padding)하는 예제 (0) | 2022.05.28 |
OpenCV Python - Image Center Crop 예제 (0) | 2022.03.06 |
Python OpenCV에서 이미지 크기 (width, height) 가져오기 (2) | 2021.11.14 |