바운딩박스를 객체 판별 없이 사용할 수 있나요?
225
작성한 질문수 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
ModelSim-Altera경로 잡아주기
0
6
0
강의 업데이트
0
9
1
블로그 내용 정리
0
9
1
3.1.강화학습 기본 알고리즘-마르코프 결정과정
0
13
2
매수 실행 시점 관련
0
19
0
영상 다운로드는 안되나요?
0
20
1
수강자료 다운로드 관련 문의
0
32
2
Opus/Sonnet 버전 관련 문의
1
27
2
"run_nvidia_gpu.bat" 실행후
0
25
1
섹션2 질문이요
1
32
2
섹션 2
0
23
1
섹션1.9 질문입니다!
1
41
3
웹서비스 방법
0
36
2
MCP 정의가 잘못되어 있음 (Chapter2)
0
39
1
수강 연장 문의드립니다.
0
37
2
13. (App 2) 기본기 훈련 에서
0
38
1
채점 프로그램 미작동
0
33
2
챌린지 시작일 문의
0
42
0
2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중
0
37
1
안녕하세요 ppt 자료 메일로 부탁드립니다
0
28
1
11차시 Antigravity IDE 설치 후
0
37
1
링크드 리스트 중간 삽입삭제 시간복잡도 질문
0
41
2
Kaggle 노트북(predict.ipynb) 관련
1
43
2
처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법
0
40
1





