두 직선 사이의 각도 구하는 OpenCV Python 예제OpenCV/OpenCV 강좌2023. 10. 18. 22:29
Table of Contents
반응형
두 직선 사이의 각도를 구하는 OpenCV Python 예제 코드입니다.
2023.2.25 최초작성
두 개의 직선을 그리면 사이 각을 출력해줍니다.
왼쪽 마우스 버튼을 클릭하여 첫번째 직선의 출발점을 지정합니다.
마우스 왼쪽 버튼을 클릭하여 첫번째 직선의 끝점을 지정해주면 직선이 그려집니다.
마우스 왼쪽 버튼 클릭으로 두번째 직선의 시작점을 지정해줍니다.
마우스 왼쪽 버튼 클릭으로 두번째 직선의 끝점을 지정해주면 직선이 그려집니다.
터미널에 두 직선의 사이각이 출력됩니다. 직선으로 생성되는 두 개의 각도 중 작은 각도가 출력됩니다.
스페이스바 키를 누르면 화면이 지워집니다. 이제 다시 직선을 그려서 각도를 다시 출력해볼 수 있습니다.
전체 코드입니다.
import cv2 import numpy as np def mouse_event(event, x, y, flags, param): global count,pre_x, pre_y if event == cv2.EVENT_FLAG_LBUTTON: count = count + 1 if count % 2 == 0: cv2.circle(img, (x,y), 10, (255,0,0), -1) cv2.line(img, (pre_x, pre_y), (x, y), (255, 255, 255), 2) list_vector.append(np.array([x-pre_x, y-pre_y])) if len(list_vector) == 2: radian = np.arccos(np.dot(list_vector[0], list_vector[1])/(np.linalg.norm(list_vector[0])*np.linalg.norm(list_vector[1]))) theta = radian * 180/np.pi theta = np.fmin(theta, 180.0-theta) print(theta) count = 0 list_vector.clear() else: pre_x = x pre_y = y cv2.circle(img, (x,y), 10, (0,0,255), -1) img_empty = np.zeros( (500,500,3), dtype=np.uint8) img = img_empty.copy() count = 0 pre_x = -1 pre_y = -1 list_vector = [] while True: text = "Clear Screen: space bar" cv2.putText(img, text, (20,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1 ) cv2.imshow('set location', img) cv2.setMouseCallback("set location", mouse_event, img) key = cv2.waitKey(1) if key == 27: # esc key break elif key == 32: #spacebar key img = img_empty.copy() |
참고
https://darkpgmr.tistory.com/121
반응형
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
주사위 눈 개수 세는 OpenCV Python 예제 (0) | 2023.10.20 |
---|---|
OpenCV Python 알파 블렌딩 : 이미지 투명하게 만들어 합치기 (0) | 2023.10.20 |
컨투어 내부에 점이 있는지 파악하는 OpenCV Python 예제 (0) | 2023.10.18 |
OpenCV에서 원하는 프레임부터 동영상 재생하기 (0) | 2023.10.18 |
Visual Studio 2022에서 GSL(GNU Scientific Library) 사용하기 (0) | 2023.10.17 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!