Потоковое видео с IP-камеры с помощью OpenCV и C ++ - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь получить доступ к потоку веб-камеры из c ++, используя код openCV, но он не выполнен и выдает ошибку, которая не может открыть поток.Приведенный ниже код обращается к веб-камере, когда URL-адрес заменяется на 0. Та же камера доступна из VLC и кода Python.

#include <stdio.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

int main(int, char**) {

    VideoCapture cap("rtsp://admin:admin@10.11.18.185:554/cam/realmonitor?channel=1&subtype=0"); // open the video camera using http protocol with the URL specified 
    while (!cap.isOpened())  // if not success, exit program
    {
        cout << "cap not open" << endl;
        continue;
        //return -1;
    }

    Mat frame;
    namedWindow("MyVideo", CV_WINDOW_AUTOSIZE); 
    while (1) {
        cap.read(frame);

        imshow("MyVideo", frame);
        if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
        {
            cout << "esc key is pressed by user" << endl;
            exit(0);
        }
    }
}

1 Ответ

0 голосов
/ 09 мая 2018

Библиотека VideoCapture ожидает определенный набор форматов для приема видеопотока.

При чтении из сохраненного файла мы указываем то же самое в расширении файла - .mp4, .avi и т. Д. Если это расширение не указано, VideoCapture не сможет захватывать кадры.

Попробуйте использовать:

VideoCapture cap("rtsp://admin:admin@10.11.18.185:554/cam/realmonitor?channel=1&subtype=0/video?x.mjpeg");

...