바운딩박스를 객체 판별 없이 사용할 수 있나요?
218
작성한 질문수 1
라즈베리파이와 아두이노를 활용한 프로젝트를 진행하고 있는데 정말 아무것도 모르는 초보라 이해해주시면 감사하겠습니다!
라즈베리파이 카메라모듈을 사용하여 카메라에 인식된 물체에 바운딩박스를 씌우고, 그 중심점 좌표와 크기만 얻으면 되는데, 바운딩박스에 대해 찾아보면 yolo를 활용하여 데이터 학습을 시키고 꼭 객체 판별을 하더라고요. 하지만 저는 객체가 개인지 새인지 판별하는 그런 것은 필요가 없어서 그저 카메라에 인식된 물체에 바운딩박스만 씌우고 좌표와 크기를 받아오는, 할 수 있으면 거리까지 측정할 수 있는 방법이 있을지 궁금합니다.
예제 코드도 같이 알려주시면 이해가 잘 될 것 같습니다!
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
소소소님, 라즈베리파이와 아두이노 프로젝트에서 바운딩박스를 사용하면서 객체 판별 없이 물체의 위치와 크기 등을 얻고 싶으신 경우, YOLO와 같은 객체 인식 모델을 사용하지 않고도 가능합니다. OpenCV라는 라이브러리를 통해 간단한 움직임 감지와 바운딩박스 처리가 가능합니다.
우선 OpenCV를 설치해야 하며, Python을 사용한다고 가정하고 예제 코드를 제공해드리겠습니다. 아래 코드는 움직임 감지를 통해 카메라에 비춰진 물체에 바운딩박스를 만드는 예제입니다.
import cv2
# 카메라 장치 열기
cap = cv2.VideoCapture(0)
while True:
# 프레임 읽기
ret, frame = cap.read()
# 그레이스케일 변환
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 블러 적용
blur = cv2.GaussianBlur(gray, (21, 21), 0)
# 첫 번째 프레임 저장
if 'first_frame' not in globals():
first_frame = blur
continue
# 첫 번째 프레임과 현재 프레임의 차이 계산
delta_frame = cv2.absdiff(first_frame, blur)
thresh_frame = cv2.threshold(delta_frame, 30, 255, cv2.THRESH_BINARY)[1]
thresh_frame = cv2.dilate(thresh_frame, None, iterations=2)
# 윤곽선 찾기
contours, _ = cv2.findContours(thresh_frame.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
if cv2.contourArea(contour) < 500: # 너무 작은 물체는 무시
continue
(x, y, w, h) = cv2.boundingRect(contour)
# 바운딩박스 그리기
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)
# 중심점 좌표 출력
center_x, center_y = int(x + w/2), int(y + h/2)
print(f"Center: {center_x}, {center_y}")
# 화면에 프레임 보여주기
cv2.imshow("Frame", frame)
key = cv2.waitKey(1)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
위 코드는 webcam을 사용하여 물체를 감지하고, 그 물체에 바운딩박스를 그립니다. 또한 각 물체의 중심좌표를 콘솔에 출력합니다. 거리 측정의 경우, 카메라 기반일 때는 수학적 모델링이나 추가 센서가 필요할 수 있습니다. 초음파 센서나 적외선 거리 센서를 추가로 활용하여 거리를 측정하는 것도 방법입니다.
도움이 되셨으면 좋겠습니다! 추가 질문이 있다면 언제든지 문의해주세요.
출처: OpenCV: Motion Detector Example
3강, 7강 화면이 안나옵니다. 그냥 검은화면으로만 노출되요;;
0
4
0
cursor 환경
0
3
1
Gradio 실행 시 에러 발생 문의
0
7
2
Gradio 실행 시 Jinja2 / ASGI TypeError: unhashable type: 'dict' 에러 문의
0
7
2
안녕하세요, 강의자료 요청드립니다
0
7
1
개발 환경 준비와 프로젝트 구조 강의 관련
1
6
2
자료실 문의합니다. AIDU 툴 다운받으려고합니다.
0
3
0
수강연장요청 문의
0
7
1
저장 공간
1
16
2
수업자료 안열림
0
13
1
41강 1분 39초 영상에서 import test_module이 조회 안 돼요.
0
14
1
실습파일이 제대로 올라와 있지 않습니다.
0
12
2
정처기 26-2회. 9번 질문드립니다!
0
27
1
1-11 소수 나열하기 (에라토스테네스의 체)
0
15
0
이론 보면서 질문이 있습니다.
0
31
2
테마 개발의 한계, 업종이 대체 할 수 있을까요?
0
19
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
40
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
54
2
262 정처기 실기 C언어코딩
0
24
1
정보처리기사 262 실기 Hash(해시) 질문
0
46
2
static 변수 질문입니다.
0
36
2
파이썬 4강 질문입니다.
0
48
2
colab 코드 실행시 error
1
31
2
모의고사 1회 3번문제
0
75
3





