Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann OpenCV für den Zugriff auf Frames von Netzwerkkameras verwendet werden?

Wie kann OpenCV für den Zugriff auf Frames von Netzwerkkameras verwendet werden?

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 13:11:02516Durchsuche

How Can OpenCV Be Used to Access Frames from Network Cameras?

OpenCV mit Netzwerkkameras: Ein umfassender Leitfaden

Bei der Arbeit mit Netzwerkkameras ist der Zugriff auf Bilddaten für Bildverarbeitungs- und Analyseaufgaben oft von entscheidender Bedeutung . In diesem Artikel wird untersucht, wie Sie OpenCV, eine leistungsstarke Computer-Vision-Bibliothek, nutzen können, um Bilder von Netzwerkkameras effektiv zu erfassen.

Die Herausforderung angehen

Ein Benutzer erkundigte sich nach dem Erwerb von Bildern von eine Netzwerkkamera mit OpenCV 1.1pre1. Die Kamera streamte MPEG4 über RTSP oder MJPEG über HTTP. Trotz umfangreicher Recherchen stieß der Benutzer auf Schwierigkeiten bei der Verwendung von FFMPEG mit OpenCV.

Die OpenCV-Lösung

Für OpenCV-Versionen 2.0 und höher wird unten ein C-Code-Snippet bereitgestellt Bilder von der Netzwerkkamera abrufen:

#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"; 

    if(!vcap.open(videoStreamAddress)) {
        std::cout << "Error opening video stream or file" << std::endl;
        return -1;
    }

    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;
    }   
}

Im Code kann videoStreamAddress ein MJPEG sein Stream-Adresse wie „http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?.mjpg“.

Um Frames aus H.264-RTSP-Streams zu erfassen, beziehen Sie sich auf die API Ihrer Kamera spezifische URL-Befehlsdetails. Die RTSP-Adresse einer Axis-Netzwerkkamera könnte beispielsweise wie folgt lauten:

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

Diese Lösung nutzt die cv::Mat-Struktur, die gegenüber der alten IplImage-Struktur bevorzugt wird. Der Code erstellt ein Ausgabefenster für die Frame-Anzeige und vermeidet so eine ineffiziente Fenstererstellung bei jedem imshow(...)-Aufruf.

Das obige ist der detaillierte Inhalt vonWie kann OpenCV für den Zugriff auf Frames von Netzwerkkameras verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn