From f759d0e7d8440a3dec25c3223132c1755dee8620 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9C=A4=ED=98=84=EC=A4=80?= <triplenieun@ajou.ac.kr>
Date: Thu, 21 Dec 2023 18:43:46 +0900
Subject: [PATCH] detect the circle on the image and get distance

---
 camera_rgbled/get_distance.py | 43 +++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 camera_rgbled/get_distance.py

diff --git a/camera_rgbled/get_distance.py b/camera_rgbled/get_distance.py
new file mode 100644
index 0000000..9821a49
--- /dev/null
+++ b/camera_rgbled/get_distance.py
@@ -0,0 +1,43 @@
+import cv2
+import numpy as np
+
+# 이미지 read
+image = cv2.imread('captures/cam.jpg')
+gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+
+
+# 이미지 블러 처리
+gray_blurred = cv2.blur(gray, (3, 3))
+
+# Hough 변환을 사용하여 원 검출
+detected_circles = cv2.HoughCircles(gray_blurred, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=71, minRadius=438)
+
+# 이미지의 중심 좌표 계산
+image_center = (image.shape[1] // 2, image.shape[0] // 2)
+
+if detected_circles is not None:
+    detected_circles = np.uint16(np.around(detected_circles))
+    for circle in detected_circles[0, :]:
+        center_x, center_y = circle[0], circle[1]
+
+        # 원의 중심과 이미지 중심 사이의 x축 및 y축 거리 차이 계산
+        distance_x = (center_x - image_center[0])
+        distance_y = (center_y - image_center[1])
+
+        # 원의 중심에 점 그리기
+        cv2.circle(image, (center_x, center_y), 2, (0, 255, 0), 3)
+
+        # 이미지의 중심에 점 그리기
+        cv2.circle(image, image_center, 2, (0, 0, 255), 3)
+
+        # 원의 중심과 이미지 중심 사이의 거리 표시
+        cv2.line(image, (center_x, center_y), (image_center[0], center_y), (255, 0, 0), 2)
+        cv2.line(image, (image_center[0], center_y), image_center, (255, 0, 0), 2)
+
+        print(f"{distance_x}/{distance_y}")
+
+# 결과 이미지 표시
+cv2.imwrite('output.jpg', image)
+cv2.waitKey(0)
+cv2.destroyAllWindows()
+
-- 
GitLab