opencv 用C++控制网络摄像机的云台功能

p3rjfoxz  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(155)

我正在做一个项目,需要通过UI控制我的IP摄像机的PTZ功能。我目前正在使用D-Link DCS-5020 L云摄像头、Microsoft Visual Studio 2017OpenCV 3.3进行设置。
我对C和OpenCV还是个新手,但我的项目需要使用它。我能够访问相机的饲料,但我不知道如何控制相机的功能,使用C代码通过OpenCV或如果OpenCV甚至是必要的。
是否有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;
    }
}

字符串
任何帮助都是感激的。- 谢谢你-谢谢

mcdcgff0

mcdcgff01#

通常,PTZ功能是在摄像机中运行的服务器上实现的软件。一些较旧的相机曾经附带一个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

字符串
所以一个典型的使用curl来改变云台的post示例应该类似于这样:

curl --user <username>:<password> --user-agent "user" --data "PanSingleMoveDegree=5&TiltSingleMoveDegree=5&PanTiltSingleMove=5" http://<ip>/pantiltcontrol.cgi


对于使用Web浏览器的快速测试,您应该能够使用以下结构化URL的get请求执行相同的操作:

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


”现在,回到你的问题。在C中控制PTZ所需的全部内容,就是在Web上查询上述URL。这应该是你的搜索点。**
此主题的许多Answer已出现堆栈溢出。这是我在谷歌上搜索“c
http get post”时得到的第一个结果。How do you make a HTTP request with C++?

6kkfgxo0

6kkfgxo02#

我使用软件“ONVIF设备管理器”来观看交通控制云台
在我使用V380pro相机的情况下,我发现您可以使用Postman或SoapUI的PTZ的XML服务,参数如下:

method:POST

url:http://<user>:<password>@<ip_address>:8899/onvif/PTZ

body:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <ContinuousMove xmlns="http://www.onvif.org/ver20/ptz/wsdl">
            <ProfileToken>stream0_0</ProfileToken>
            <Velocity>
                <PanTilt x="-0.5" y="0" xmlns="http://www.onvif.org/ver10/schema"/>
            </Velocity>
        </ContinuousMove>
    </s:Body>
</s:Envelope>

字符串

相关问题