Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-11-09 17:45:02655parcourir

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

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:
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