2013-08-15 10 views
1

open cv를 사용하여 cp plus ip 카메라를 내 앱에 연결하려고합니다. 프레임을 캡처하는 데 너무 많은 방법을 시도했습니다. "rtsp"프로토콜을 사용하여 프레임을 캡처하도록 도와주세요. IP 캠의 URL은 "rtsp : // admin : [email protected] : 554/VideoInput/1/mpeg4/1"입니다. 나는 VLC 플레이어를 사용하여 이것을 시도했다. 그 일. libvlc에 의해 프레임을 캡쳐하는 방법이 있고 공개 CV로 전달하는 방법을 언급하십시오.opencv를 사용하여 ip cam에서 프레임 캡처

답변

0

"rtsp : // admin : [email protected].168.1.108 : 554/VideoInput/1/mpeg4/1? .mjpg"시도해보십시오. opencv는 비디오 스트림 유형에 대한 URL의 끝을 보입니다.

+0

나는 당신의 방법을 시도했다. 여전히 작동하지 않습니다. 나는 비디오 캡쳐를 카메라 캡처에 사용했다. –

+0

나는 두 가지 대안을 제시 할 수있다. 1) .mp4 또는 .mpeg 대신 .jpeg를 사용한다. 2) ffmpeg로 opencv를 재구성한다. –

+0

ty .. 나는 내가 할 수있는 것을 볼 것이다. ...... –

0

첫 번째 단계는 발견에 RTSP URL을, 그리고 VLC에서 테스트 : ONVIF 사용하여 찾는 방법에 대한 자세한 내용은 여기를 참조하십시오. 이미 그걸 가지고 있다고 하셨 잖아요.

누군가가 rtsp URL을 알아 내야한다면 Linux에서 vista-device-tool (link) 또는 gsoap-onvif (link)를 사용하는 것이 좋습니다. rtsp url이있을 것입니다. . 이미 RTSP의 URL과가있는 경우

vlc rtsp://your_url 

: 발견 후 내가 추천하는 RTSP URL은 VLC 플레이어 (link), 당신은 메뉴 옵션을 사용하여 "개방 네트워크 스트림을"테스트하거나 명령 행에서 할 수에서 테스트하기 cv :: VideoCapture를 만들고 프레임을 잡는 것보다 vlc에서 성공적으로 테스트했습니다. 이 같은이 작업을 수행 할 수 있습니다

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <iostream> 

int main() { 
    cv::VideoCapture stream = cv::VideoCapture("rtsp://admin:[email protected]:554/VideoInput/1/mpeg4/1"); 
    if (!stream.isOpened()) return -1; // if not success, exit program 

    double width = stream.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video 
    double height = stream.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video 
    std::cout << "Frame size : " << width << " x " << height << std::endl; 

    cv::namedWindow("Onvif",CV_WINDOW_AUTOSIZE); //create a window called "Onvif" 
    cv::Mat frame; 

    while (1) { 
     // read a new frame from video 
     if (!stream.read(frame)) { //if not success, break loop 
      std::cout << "Cannot read a frame from video stream" << std::endl; 
      cv::waitKey(30); continue; 
     } 
     cv::imshow("Onvif", frame); //show the frame in "Onvif" window 

     if (cv::waitKey(15)==27) //wait for 'esc' 
      break; 
    } 
} 

는 컴파일하려면 :

g++ main.cpp `pkg-config --cflags --libs opencv` 
관련 문제