>  기사  >  백엔드 개발  >  OpenCV를 사용하여 IP 카메라에서 프레임을 어떻게 캡처합니까?

OpenCV를 사용하여 IP 카메라에서 프레임을 어떻게 캡처합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-09 17:45:02637검색

How can I capture frames from IP cameras with OpenCV?

OpenCV를 사용하여 IP 카메라에서 프레임 캡처

OpenCV를 사용하여 IP 카메라에서 프레임을 캡처하려면 다음 단계를 수행할 수 있습니다.

  1. 필요한 라이브러리 포함:

    • OpenCV 버전 2.0 이상:

      • # include "cv.h"
      • #include "highgui.h"
    • 이전 버전의 OpenCV(예: 1.1pre1):

      • #include "cv.h"
      • #include "highgui.h"
  2. 열기 비디오 스트림:

    • cv::VideoCapture를 사용하여 비디오 스트림을 엽니다. 예:

      • cv::VideoCapture vcap("rtsp://cam_address:554/live.sdp"); // RTSP 스트림
      • cv::VideoCapture vcap("http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?.mjpg"); // MJPEG 스트림
  3. 읽기 프레임:

    • vcap.read(이미지) 사용 프레임을 cv::Mat 이미지로 읽어옵니다.
  4. 프레임 표시:

    • cv를 사용하여 출력 창 만들기 ::namedWindow("출력 창").
    • cv::imshow("출력 창", image)를 사용하여 프레임을 표시합니다.
  5. 사용자 상호 작용 처리:

    • cv::waitKey()를 사용하여 사용자 입력 또는 지정된 시간 간격을 기다립니다.

OpenCV 2.0용 예제 코드:

#include "cv.h"
#include "highgui.h"
#include <iostream>

int main(int, char**) {
    cv::VideoCapture vcap;
    cv::Mat image;

    const std::string videoStreamAddress = "rtsp://cam_address:554/live.sdp";  // RTSP stream

    // Open the video stream and check if it's open
    if (!vcap.open(videoStreamAddress)) {
        std::cout << "Error opening video stream or file" << std::endl;
        return -1;
    }

    // Create output window for displaying frames.
    cv::namedWindow("Output Window");

    for (;;) {
        if (!vcap.read(image)) {
            std::cout << "No frame" << std::endl;
            cv::waitKey();
        }
        cv::imshow("Output Window", image);
        if (cv::waitKey(1) >= 0) break;
    }

    return 0;
}

H.264 RTSP 스트림 업데이트:

H.264 RTSP 스트림에서 프레임을 캡처하려면 OpenCV 2.0 이상에서는 다음 URL 형식을 사용할 수 있습니다:

  • rtsp://10.10.10.10:554/axis-media/media.amp

카메라에 인증이 필요합니다. 다음 URL 형식을 사용하세요.

  • rtsp://username:[email protected]:554/axis-media/media.amp

위 내용은 OpenCV를 사용하여 IP 카메라에서 프레임을 어떻게 캡처합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.