OpenCV VideoCapture дайджест-аутентификация

У меня есть постоянный проект доступа к нескольким IP-камерам через opencv VideoCapture, работающий для большинства из них.

У меня новая PTZ-камера Dahua, использующая дайджест-проверку подлинности, и VideoCapture в OpenCV не может ее открыть. Через WireShark я мог видеть, что камера возвращает 401 Unaothorized.

Я не нашел ничего в документации OpenCV о проблемах аутентификации.

Может быть, мне нужно использовать что-то еще, что не OpenCV, чтобы решить эту проблему?

Вот минимальный рабочий код (если у вас есть камера для тестирования).

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

А вот и ответ камеры:

Неаэторизированный ответ HTTP

1

Решение

Я решил проблему, используя поток rtsp камеры вместо изображения http. благодарю вас! (если у вас есть эта проблема в вашей IP-камере, попробуйте поток rtsp, они должны иметь команду в документации).

Окончательный рабочий код в моей камере Dahua:

#include <iostream>
#include <imgproc.hpp>
#include <opencv.hpp>
#include <highgui.hpp>
using namespace std;
using namespace cv;
int main(){
VideoCapture cap("rtsp://login:[email protected]/cam/realmonitor?channel=1?subtype=0");
if(!cap.isOpened()){
cout << "bug" << endl;
return 1;
}

Mat frame;
cap >> frame;
imshow("test", frame);

}

По какой-то причине opencv может выполнить дайджест-аутентификацию при использовании rtsp.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]