C++ 使用C+控制IP摄像机的云台功能+;

C++ 使用C+控制IP摄像机的云台功能+;,c++,opencv,visual-c++,controls,ip-camera,C++,Opencv,Visual C++,Controls,Ip Camera,我正在从事一个项目,该项目需要通过UI控制我的IP摄像头的PTZ功能。我目前正在使用D-Link DCS-5020L云摄像头、Microsoft Visual Studio 2017和OpenCV 3.3进行设置 我对C++和OpenCV还很陌生,但是我的项目需要使用它。我可以访问相机的饲料,但我不知道如何控制相机的功能,使用C++代码通过OpenCV或如果OpenCV甚至需要。p> 有没有一个C++代码来控制IP摄像机的PTZ功能? 这是我实现视频输出的代码,如果需要的话 // VIDEO C

我正在从事一个项目,该项目需要通过UI控制我的IP摄像头的PTZ功能。我目前正在使用D-Link DCS-5020L云摄像头、Microsoft Visual Studio 2017OpenCV 3.3进行设置

<>我对C++和OpenCV还很陌生,但是我的项目需要使用它。我可以访问相机的饲料,但我不知道如何控制相机的功能,使用C++代码通过OpenCV或如果OpenCV甚至需要。p>

有没有一个C++代码来控制IP摄像机的PTZ功能? 这是我实现视频输出的代码,如果需要的话

// VIDEO CAPTURE //

Mat frame;

VideoCapture cap("http://username:password@IPADDRESS:PORT/video.cgi?resolution=640x360&req_fps=30&.mjpg");

if (!cap.isOpened())    //EXIT PROGRAM IF FAILED
{
    cout << "CAMERA UNAVAILABLE" << endl;
    return -1;
}
while (1)
{
    bool bSuccess = cap.read(frame);    //READ NEW FRAME FROM VIDEO

    if (!bSuccess)      //BREAK LOOP IF FAILED
    {
        cout << "UNABLE TO DISPLAY VIDEO" << endl;
        break;
    }
}
//视频捕获//
垫架;
视频捕捉帽(“http://username:password@IPADDRESS:PORT/video.cgi?分辨率=640x360&req_fps=30&mjpg“;
if(!cap.isOpened())//失败时退出程序
{

cout通常,PTZ功能是在cam中运行的服务器上实现的软件。 一些较旧的相机通常附带activeX控件。 这些功能可以通过获取或发布到相对于相机的url来访问

对于您的相机,您应该能够在以下url上发布控件:

http://<ip>/pantiltcontrol.cgi

Available controls: 
POST parameters
PanSingleMoveDegree (default 5)  
TiltSingleMoveDegree (default 5) 
PanTiltSingleMove

Values for PanTiltSingleMove (based on the web UI controls):
Top 1
Top right   2
Right   5
Bottom right    8
Bottom  7
Bottom left 6
Left    3
Top left    0
Home (reset)    4
http:///pantiltcontrol.cgi
可用控件:
POST参数
PanSingleMoveDegree(默认值5)
倾斜角度(默认值5)
潘蒂尔斯莫夫
PanTiltSingleMove的值(基于web UI控件):
第一名
右上角2
对五
右下角8
底部7
左下角6
左3
左上角0
主页(重置)4
因此,使用curl改变摇摄倾斜的典型post示例应与以下类似:

curl --user <username>:<password> --user-agent "user" --data "PanSingleMoveDegree=5&TiltSingleMoveDegree=5&PanTiltSingleMove=5" http://<ip>/pantiltcontrol.cgi
curl--user:--用户代理“user”--数据“PanSingleMoveDegree=5&TiltSingleMoveDegree=5&pantiltsinglemovedegree=5”http:///pantiltcontrol.cgi
对于使用web浏览器的快速测试,您应该能够使用以下结构化url的get请求执行相同的操作:

http://<username>:<password>@<ip>/pantiltcontrol.cgi?PanSingleMoveDegree=5&TiltSingleMoveDegree=5&PanTiltSingleMove=5
http://:@/pantiltcontrol.cgi?PanSingleMoveDegree=5&TiltSingleMoveDegree=5&pantiltsinglemovedegree=5

<强>现在,回到您的问题。C++中所有需要控制PTZ的,都是Web查询所提到的URL。因此这应该是您的搜索点。>P/> 关于这个主题的许多答案已经在堆栈溢出上了。这是我在谷歌搜索“c++http get post”时得到的第一个结果。