from ultralytics.yolo.engine.model import YOLO
import RPi.GPIO as GPIO
import time
# LED의 핀 번호 (BCM)
led = 12
# GPIO 모드 설정
GPIO.setmode(GPIO.BCM)
# LED를 위한 GPIO 설정
GPIO.setup(led, GPIO.OUT)
# YOLO 객체 생성
model = YOLO("/home/esp/sharefolder/best.onnx")
# 객체 탐지 및 LED 제어
while True:
results = model.predict(source="0", show=True, imgsz=[320, 320])
for result in results:
clist = result.boxes.cls
cls = set()
for cno in clist:
cls.add(model.names[int(cno)])
print(cls)
print(clist)
if 'person' in cls or 'vehicle' in cls:
print("Detected person or vehicle, turning on LED...")
# LED를 켜는 코드를 작성하세요
GPIO.output(led, GPIO.HIGH)
time.sleep(1)
GPIO.output(led, GPIO.LOW)
else:
print("No person or vehicle detected.")
time.sleep(1)
# GPIO 설정 초기화
GPIO.cleanup()
실시간으로 웹캠으로 객체 탐지를하고, person과 vehicle이 동시에 탐지가 되면 led가 작동하는것이 목표입니다.
근데 results = model.predict(source="0", show=True, imgsz=[320, 320])
여기까지 실행되고 그 아래가 실행이 안되는건지
아님 실행은 되지만 아예 비어있는건지 ..
0: 320x320 1 person, 1 vehicle, 164.5ms
0: 320x320 1 person, 1 vehicle, 158.8ms
0: 320x320 1 person, 1 vehicle, 157.0ms
이렇게 터미널에서 탐지 결과는 출력되는데
cls 이름들 출력이 안됩니다 이 부분이 출력이 안된다는건
저장이 안되었거나 아예 실행도 안된다는건데..
정말 스택오버플로우, 챗 지피티, 공식 깃헙에 이슈에도 등록했는데
갈피를 못잡겠습니다..저 class만 잘 저장되면
저장된 이름을 불러와서 여러조건에 따라 gpio들 제어할 수 있게 할려는건데 ..