Heim > Artikel > Backend-Entwicklung > Wie kann OpenCV für den Zugriff auf Frames von Netzwerkkameras verwendet werden?
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!