Ich habe ein laufendes Projekt Zugriff auf mehrere IP-Kameras durch opencv VideoCapture, arbeiten für die meisten von ihnen.OpenCV VideoCapture Digest Authentifizierung
Ich habe eine neue Dahua PTZ-Kamera, die Digest-Authentifizierung verwendet, und die VideoCapture in OpenCV kann es nicht öffnen. Durch WireShark konnte ich sehen, dass die Kamera einen 401 Unaothorized zurückgibt.
Ich habe nichts über OpenCV Dokumentation über Auth Probleme gefunden.
Vielleicht muss ich etwas anderes verwenden, das nicht OpenCV ist, um das zu lösen?
Hier ist ein Mindestarbeitscode (wenn Sie eine Kamera zum Testen haben).
#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);
}
}
Und hier ist die Kamera Antwort:
Welche API verwendet die 'VideoCapture'? – zindarod
versuchte alle drei ohne Erfolg (CAP_IMAGES, CAP_DSHOW und CAP_FFMPEG) – Diedre
Versuchen Sie, Zugriff auf die Kamera über 'FFMPEG' oder 'Gstreamer' Befehlszeile zuerst. Nachdem Sie eine funktionierende Pipeline gefunden haben, übersetzen Sie diese Pipeline in die 'VideoCapture'-Eingabe, was einfach ist. Aber du musst OpenCV mit 'FFMPEG' oder' Gstreamer' gebaut haben, damit die Pipeline mit 'VideoCapture' funktioniert. – zindarod