ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기
    Raspberry Pi/Camera 2018. 10. 30. 15:21


    라즈베리파이에 mjpg-streamer를 설치하여 웹 스트리밍하는 영상을 가져와서 OpenCV에서 사용해보았습니다.



    Raspberry Pi에서 mjpg-streamer를 사용하여 웹캠 스트리밍하기

    http://webnautes.tistory.com/1261





    사용방법은 간단합니다.  

    VideoCapture 객체에 웹 스트리밍 주소를 입력해주기만 하면 됩니다.


    VideoCapture cap = VideoCapture("http://192.168.43.142:8090/?action=stream");






    테스트에 사용한 전체 소스 코드입니다.


    #include <opencv2/opencv.hpp>
    #include <iostream>


    using namespace cv;
    using namespace std;


    int main()
    {
    Mat frame;
    VideoCapture cap = VideoCapture("http://192.168.43.142:8090/?action=stream");
    if (!cap.isOpened()) {

    cout << "카메라를 열 수 없습니다." << endl;
    return -1;
    }

    while (1)
    {
    cap >> frame;

    imshow("video", frame);
    if (waitKey(1) == 27) break;

    }

    return 0;
    }




    2018.10.30. 최초작성





    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    댓글 13

    • Yoon 2019.11.12 16:41


      으음..... 혹시 외부 스트리밍 주소를 .py내로 가져올 수 있는 파이썬 명령어는 없을까요.....

    • Keryzy 2019.11.14 00:32


      라즈베리파이IP:8090/?action=stream 을 웹스트리밍 할 시에는 동작 하는것을 확인 하였는데 C++ OpenCV에서 작동할 시 카메라를 열 수 없습니다 라는 메세지가 출력됩니다. 혹시 OpenCV 설치 시 달리 추가하신 내용이라도 있나요?

    • david 2019.11.14 01:38


      raspberry pi 0에서 mjpg stremaer로 영상을 전송하고 이를 웹 브라우저에서 확인하는 것까지는 정상적으로 작동합니다. 그런데 올려주신 테스트 코드를 Visual Studio 2017, OpenCV 3.4.2 에서 돌려보니 동작하지 않네요.. 혹시 OpenCV 버전 문제인가요??

    • Keryzy 2019.11.14 18:44


      std::cout << cv::getBuildInformation() << std::endl; 을 사용하여서 정보를 확인한 결과 Gstremear가 NO 로 설정되어 있었습니다. 혹시 이 문제 때문에 발생한 결과일까요...?

    • Jaychun 2019.12.02 17:29


      안녕하세요 비슷한 작업을 진행중인데요!^^
      혹시 계속 켜두면 멈추지 않으시나요? cap 이 read 하다가 블락킹에 빠져서 루프를 못 빠져나오는 현상이요...
      처음엔 h264때문인줄 알았는데 mjpeg 를 써도 동일하더라고여 뭔가 실마리를 잡고 싶어서 글남깁니다;;

    • Jaychun 2019.12.03 17:47


      빠른 답변 감사합니다!^^
      상황은 이렇습니다.
      ipcamera의 네트워크를 스마트폰 테더링으로 연결하고 포트포워딩이 되지않아 미디어서버를 거쳐 http url 로 스트리밍 걸거든요. 문제는 프레임이 empty여도 opencv 단에서 바로 리턴해주지 않고 약 20초이상 대기상태로 빠집니다.
      제 생각엔 미디어서버가 문제같은데...원인을 찾기가 힘드네요ㅜㅜ
      참!그리고 ipcamera 가 제공해주는 rtsp 프로토콜로 스트리밍걸면은 굉장히 잘됩니다!!

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.12.03 22:20 신고


        윈도우 환경에서 로지텍 카메라 일부 기종에서 다음처럼 적어줘야 딜레이가 사라지는데 유사한 현상이 아닌가 싶네요.

        VideoCapture cap(0, cv::CAP_DSHOW);

        다른 벡엔드 옵션은 아래 링크에 있습니다.
        https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d

Designed by Tistory.