• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

YOLO 에 OBS라는 방송 녹화 / 송출 프로그램의 영상을 실시간으로 디텍션 하려 합니다.

21.03.11 01:58 작성 조회수 375

0

YOLO 를 사용해서 실시간으로 obs 라는 프로그램의 화면을 디텍션 하려 합니다.

송출 컴퓨터와 게임 컴퓨터가 있는데

게임 컴퓨터의 영상을 '캡쳐보드'를 통하여 모니터 화면 그대로 송출 컴퓨터에 가져와서

obs 라는 방송용 프로그램에 띄웁니다.

그리고 이것을 실시간으로 디텍션하려 하는데

어떻게해야 obs의 화면 창을 YOLO 프로그램에서 띄울 수 있나요...?

혹시나 obs가 아니라 그냥 캡쳐보드로 가져온 실시간 영상을 있는 그대로 사용할 수 있다면.. 좋겠습니다.

다른 방법이 있을까요 ㅜ

hdmi 비디오 캡쳐 장치로 가져온 실시간 영상을 YOLO를 이용해 실시간 검출을 하고싶습니다

/// hdmi 비디오 캡쳐 장치로 가져온것을 YOLO 에서 ' 0 ' 으로 웹캠 설정으로 돌렸을때 뜨는 에러 메시지.

[ WARN:0] global C:\TheCodingBug\OpenCV_CUDA\opencv-4.4.0\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (373) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -1072875772

[ WARN:0] global C:\TheCodingBug\OpenCV_CUDA\opencv-4.4.0\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (385) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error status: -1072875772

[ WARN:1] global C:\TheCodingBug\OpenCV_CUDA\opencv-4.4.0\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (912) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -1072875772

Elasped time: 0.00

Traceback (most recent call last):

  File "run_yolo.py", line 38, in <module>

    get_yolo_preds(net, input_vid_path, output_vid_path, confidence_threshold,

  File "C:\TheCodingBug\YOLO_OpenCV\run_yolo\my_utils.py", line 85, in get_yolo_preds

    print("FPS: {:.2f}".format(fps.fps()))

  File "C:\Users\lante\anaconda3\lib\site-packages\imutils\video\fps.py", line 33, in fps

    return self._numFrames / self.elapsed()

ZeroDivisionError: float division by zero

[ WARN:1] global C:\TheCodingBug\OpenCV_CUDA\opencv-4.4.0\opencv-4.4.0\modules\videoio\src\cap_msmf.cpp (435) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback

소스코드는 너무 길어서 못올리는데

제가 짠게아니라 유튜브의 외국인 영상에서 YOLO를 웹캠을 사용해 실시간 검출을 하길래

따라서 해봤는데 정말 되는겁니다.

그런데 영상 파일같은게 아닌 모니터 화면 자체를 그냥 검출 한다든가.

특정 창을 검출 한다든가 하는걸 못하겠네요..

답변 1

답변을 작성해보세요.

0

OBS 가 경기 인천 방송인줄 알았는데, 검색해보니 실시간 방송 S/W인가 보군요.

음, 제가 OBS를 써보지 않아서 잘은 모르겠지만, 이건 OBS에서 생성해 주는 Stream이나 파일을 다시 읽어서 opencv의 VideoCapture로 한 frame씩 Yolo Detection을 해야 되는데,,,

문제는 OBS에서 생성해주는 Stream을 어떻게 읽을 수 있냐인데, 이게 가능할지 모르겠습니다.  해당 소프트웨어의 메뉴얼을 일단 뒤져보셔야 할 것 같습니다만, 소프트웨어의 특성상 이게 힘들지 않을까 싶습니다. 가령 MP4 파일로 만들어져도 계속 만들고 있는 중이면 파일을 읽을때 encoding/decoding 오류가 날것 같고,,,

해당 내용은 저도 뭐라 답변을 드리기가 어렵군요. 여기까지가 제가 답변 드릴수 있는 내용인것 같습니다.