컨투어 내부에 점이 있는지 파악하는 OpenCV Python 예제OpenCV/OpenCV 강좌2023. 10. 18. 22:28
Table of Contents
반응형
OpenCV 컨투어 내부에 점이 있는지 파악하는 Python 예제 코드입니다.
2023. 4. 17 최초작성
아래 그림에서 컨투어는 파란 도형 주변에 파란색 선으로 검출된 상태입니다. 도형 내부를 클릭하면 양수가 출력되며 도형 외부를 클릭하면 음수가 출력됩니다. 수치는 컨투어에 근접할 수록 작은 숫자가 됩니다. 컨투어 위에선 0이 됩니다.
전체 소스 코드입니다.
import cv2 def mouse_event(event, x, y, flags, param): global cx,cy,dist, img, img_color if event == cv2.EVENT_FLAG_LBUTTON: img = img_color.copy() cx = x cy = y dist = cv2.pointPolygonTest(contours[1], (cx, cy), True) print(dist) img_color = cv2.imread('test.jpg') img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY) ret, img_binary = cv2.threshold(img_gray, 200, 255, 0) contours, hierarchy = cv2.findContours(img_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) print('컨투어 개수', len(contours)) cx=0 cy=0 dist = 0 img = img_color.copy() while(1): cv2.drawContours(img, [contours[1]], 0, (255, 0, 0), 3) # blue cv2.circle(img, (cx, cy), 10, (0, 255, 0), -1) cv2.putText(img, str(int(dist)), (100,100), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2) cv2.imshow('test', img) cv2.setMouseCallback("test", mouse_event) key = cv2.waitKey(1) if key == 27: #esc key break |
참고
https://stackoverflow.com/questions/50670326/how-to-check-if-point-is-placed-inside-contour
반응형
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
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 |
OpenCV에서 VideoCapture사용시 read 함수는 계속 실행해야 함 (0) | 2023.10.17 |