Maison >développement back-end >Tutoriel Python >Comment capturer un flux vidéo en direct à partir d'une caméra IP à l'aide de Python

Comment capturer un flux vidéo en direct à partir d'une caméra IP à l'aide de Python

DDD
DDDoriginal
2025-01-16 20:15:10968parcourir

Ce didacticiel Python montre la capture et l'affichage d'un flux vidéo en direct à partir d'une caméra IP. Nous exploiterons requests, OpenCV et imutils pour récupérer, traiter et afficher des images. Le script récupère et affiche en continu le flux vidéo jusqu'à ce que l'utilisateur quitte.

Objectif :

Ce tutoriel montre comment :

  • Récupérez les images vidéo d'une caméra IP via HTTP.
  • Utilisez OpenCV pour traiter et afficher les images.
  • Capturez et affichez en continu des images en temps réel.
  • Implémentez une boucle pour afficher le flux, en sortant en appuyant sur une touche.

La sortie finale est un flux vidéo en direct, pouvant être terminé en appuyant sur la touche Échap.

Prérequis :

Installez ces bibliothèques :

<code class="language-bash">pip3 install requests opencv-python imutils</code>

Vous aurez également besoin d'une caméra IP ou d'un appareil diffusant de la vidéo via HTTP (par exemple, une webcam utilisant MJPEG sur le port 8080).

Utilisation de l'application Webcam IP (appareil mobile) :

  1. Installez l'application IP Webcam sur votre téléphone.
  2. Connectez votre PC et votre téléphone au même réseau.
  3. Démarrez le serveur de l'application IP Webcam. Une URL (par exemple, http://192.168.0.101:8080/video) sera affichée. Utilisez cette URL dans votre script Python. Sélectionnez « Javascript » sous Video Renderer dans l'application.
  4. Vérifiez que le flux de la caméra fonctionne en ouvrant l'URL dans votre navigateur.

How to Capture Live Video Stream from an IP Camera Using Python

Code Python :

<code class="language-python">import requests
import cv2
import numpy as np
import imutils

# Replace with your IP camera URL.  Ensure "/shot.jpg" is appended.
url = "http://192.168.0.101:8080/shot.jpg"  # Example URL

while True:
    img_resp = requests.get(url)
    img_arr = np.array(bytearray(img_resp.content), dtype=np.uint8)
    img = cv2.imdecode(img_arr, -1)
    img = imutils.resize(img, width=1000, height=1800) #Optional Resizing
    cv2.imshow("IP Camera Feed", img)
    if cv2.waitKey(1) == 27: # Esc key to exit
        break

cv2.destroyAllWindows()</code>

Explication étape par étape :

  1. Importer des bibliothèques : Importe les bibliothèques nécessaires pour les requêtes HTTP, le traitement des images, la gestion des tableaux et les fonctions utilitaires OpenCV.

  2. URL de la caméra : Définit l'URL du flux de la caméra IP. Remplacez l'adresse IP de l'espace réservé par l'adresse IP de votre caméra.

  3. Récupération d'images : Une boucle while récupère en continu les images à partir de l'URL.

  4. Décodage et redimensionnement : Les données d'image brutes sont converties en un tableau NumPy, décodées à l'aide d'OpenCV et éventuellement redimensionnées pour un meilleur affichage.

  5. Affichage : L'image s'affiche dans une fenêtre intitulée "Flux de la caméra IP".

  6. Condition de sortie : cv2.waitKey(1) attend une pression sur une touche. Appuyer sur Esc (27) interrompt la boucle.

  7. Nettoyage : cv2.destroyAllWindows() ferme toutes les fenêtres OpenCV.

Exécution du script :

  1. Démarrez votre caméra IP.
  2. Mettez à jour la variable url avec l'URL correcte de votre caméra.
  3. Enregistrez le script (par exemple, sous ipcam_viewer.py).
  4. Exécuter : python ipcam_viewer.py

Le flux vidéo devrait apparaître. Appuyez sur Échap pour fermer.

Conclusion :

Ce script fournit un cadre de base pour visualiser les flux des caméras IP. Il peut être étendu pour inclure des fonctionnalités telles que la détection de mouvement ou l’enregistrement vidéo. N'oubliez pas de remplacer l'URL de l'espace réservé par l'adresse de flux réelle de votre caméra.

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