J'ai un projet en cours d'accès à plusieurs caméras IP via opencv VideoCapture, qui fonctionne pour la plupart d'entre eux.Authentification OpenCV VideoCapture digest
J'ai une nouvelle caméra Dahua PTZ qui utilise l'authentification Digest, et VideoCapture dans OpenCV ne peut pas l'ouvrir. Grâce à WireShark, j'ai pu voir que la caméra retournait un 401 non désincarné.
Je n'ai rien trouvé dans la documentation d'OpenCV à propos des problèmes d'authentification.
Peut-être que j'ai besoin d'utiliser autre chose que OpenCV pour résoudre ce problème?
Voici un code de fonctionnement minimum (si vous avez une caméra à tester).
#include <iostream>
#include <imgproc.hpp>
#include <opencv.hpp>
#include <highgui.hpp>
using namespace std;
using namespace cv;
int main(){
while(1){
VideoCapture cap("http://login:[email protected]/cgi-bin/snapshot.cgi");
if(!cap.isOpened()){
cout << "bug" << endl;
continue;
}
Mat frame;
cap >> frame;
imshow("test", frame);
}
}
Et voici la réponse de la caméra:
Quelle API utilise 'VideoCapture'? – zindarod
essayé tous trois en vain (CAP_IMAGES, CAP_DSHOW et CAP_FFMPEG) – Diedre
Essayez d'abord d'accéder à la caméra via la ligne de commande 'FFMPEG' ou' Gstreamer'. Une fois que vous avez trouvé un pipeline de travail, traduisez ce pipeline en une entrée 'VideoCapture', ce qui est facile à faire. Mais vous devez avoir construit OpenCV avec 'FFMPEG' ou' Gstreamer' pour que le pipeline fonctionne avec 'VideoCapture'. – zindarod