Maison > développement back-end > C++ > Comment puis-je capturer des images de caméras IP avec OpenCV ?

Comment puis-je capturer des images de caméras IP avec OpenCV ?

Mary-Kate Olsen
Libérer: 2024-11-09 17:45:02
original
739 Les gens l'ont consulté

How can I capture frames from IP cameras with OpenCV?

Capturer des images de caméras IP avec OpenCV

Pour capturer des images d'une caméra IP à l'aide d'OpenCV, vous pouvez suivre les étapes suivantes :

  1. Inclure les bibliothèques nécessaires :

    • Pour OpenCV version 2.0 ou supérieure :

      • # include "cv.h"
      • #include "highgui.h"
    • Pour les anciennes versions d'OpenCV (par exemple, 1.1pre1) :

      • #include "cv.h"
      • #include "highgui.h"
  2. Ouvrir le flux vidéo :

    • Utilisez cv::VideoCapture pour ouvrir le flux vidéo. Par exemple :

      • cv::VideoCapture vcap("rtsp://cam_address:554/live.sdp"); // Flux RTSP
      • cv::VideoCapture vcap("http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?.mjpg"); // Flux MJPEG
  3. Lire les images :

    • Utiliser vcap.read(image) pour lire les cadres dans une image cv::Mat.
  4. Afficher les cadres :

    • Créer une fenêtre de sortie à l'aide de cv ::namedWindow("Output Window").
    • Afficher les cadres à l'aide de cv::imshow("Output Window", image).
  5. Gérer l'interaction utilisateur :

    • Utilisez cv::waitKey() pour attendre la saisie de l'utilisateur ou un intervalle de temps spécifié.

Exemple de code pour 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;
}
Copier après la connexion

Mise à jour pour les flux RTSP H.264 :

Pour capturer des images à partir de flux RTSP H.264 avec OpenCV 2.0 ou supérieur, vous pouvez utiliser le format d'URL suivant :

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

Si le la caméra nécessite une authentification, utilisez le format d'URL suivant :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal