C++ OpenCV视频捕获摘要认证
我有一个正在进行的项目,通过opencv VideoCapture访问多个IP摄像头,为大多数摄像头工作 我有一个新的大华PTZ相机,使用摘要认证,OpenCV中的视频捕获无法打开它。通过WireShark,我可以看到摄像机返回的是一个401未经处理的图像 我在OpenCV文档中没有发现任何关于身份验证问题的内容 也许我需要使用其他不是OpenCV的东西来解决这个问题 这是一个最低工作代码(如果你有一个摄像头要测试)C++ OpenCV视频捕获摘要认证,c++,opencv,ip-camera,digest-authentication,opencv3.3,C++,Opencv,Ip Camera,Digest Authentication,Opencv3.3,我有一个正在进行的项目,通过opencv VideoCapture访问多个IP摄像头,为大多数摄像头工作 我有一个新的大华PTZ相机,使用摘要认证,OpenCV中的视频捕获无法打开它。通过WireShark,我可以看到摄像机返回的是一个401未经处理的图像 我在OpenCV文档中没有发现任何关于身份验证问题的内容 也许我需要使用其他不是OpenCV的东西来解决这个问题 这是一个最低工作代码(如果你有一个摄像头要测试) #包括 #包括 #包括 #包括 使用名称空间std; 使用名称空间cv; in
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
int main(){
而(1){
视频捕捉帽(“http://login:password@111.111.111.111/cgi-bin/snapshot.cgi”);
如果(!cap.isOpened()){
沙发架;
imshow(“测试”,框架);
}
}
下面是摄像机的反应:
我通过使用摄像头的rtsp流而不是http映像解决了问题。谢谢!(如果您的ip摄像头存在此问题,请尝试rtsp流,文档中应该有一个命令) 我的大华相机的最终工作代码:
#include <iostream>
#include <imgproc.hpp>
#include <opencv.hpp>
#include <highgui.hpp>
using namespace std;
using namespace cv;
int main(){
VideoCapture cap("rtsp://login:password@111.111.111.111/cam/realmonitor?channel=1?subtype=0");
if(!cap.isOpened()){
cout << "bug" << endl;
return 1;
}
Mat frame;
cap >> frame;
imshow("test", frame);
}
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
int main(){
视频捕捉帽(“rtsp://login:password@111.111.111.111/cam/realmonitor?通道=1?子类型=0”);
如果(!cap.isOpened()){
沙发架;
imshow(“测试”,框架);
}
由于某些原因,opencv在使用rtsp时可以执行摘要身份验证。哪种API是使用的
VideoCapture
?尝试了所有三种方法但均无效(CAP_IMAGES、CAP_DSHOW和CAP_FFMPEG)首先尝试通过FFMPEG
或Gstreamer
命令行访问相机。找到工作管道后,然后将该管道转换为VideoCapture
输入,这很容易。但是必须使用FFMPEG
或Gstreamer
构建OpenCV,管道才能使用VideoCap真的
。正是我想要的。太棒了!
#include <iostream>
#include <imgproc.hpp>
#include <opencv.hpp>
#include <highgui.hpp>
using namespace std;
using namespace cv;
int main(){
VideoCapture cap("rtsp://login:password@111.111.111.111/cam/realmonitor?channel=1?subtype=0");
if(!cap.isOpened()){
cout << "bug" << endl;
return 1;
}
Mat frame;
cap >> frame;
imshow("test", frame);
}