【发布时间】:2018-03-02 20:19:55
【问题描述】:
我有一个正在进行的项目,通过 opencv VideoCapture 访问多个 IP 摄像机,其中大多数都工作。
我有一个新的使用摘要认证的大华云台摄像机,OpenCV 中的 VideoCapture 无法打开它。通过 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:password@111.111.111.111/cgi-bin/snapshot.cgi");
if(!cap.isOpened()){
cout << "bug" << endl;
continue;
}
Mat frame;
cap >> frame;
imshow("test", frame);
}
}
这是相机的响应:
【问题讨论】:
-
VideoCapture使用哪个 API? -
尝试了所有三个都无济于事(CAP_IMAGES、CAP_DSHOW 和 CAP_FFMPEG)
-
先尝试通过
FFMPEG或Gstreamer命令行访问摄像头。找到工作管道后,将该管道转换为VideoCapture输入,这很容易做到。但是您必须使用FFMPEG或Gstreamer构建 OpenCV 才能使管道与VideoCapture一起使用。
标签: c++ opencv ip-camera digest-authentication opencv3.3