Python Onvif控件

2024-09-27 23:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python制作了所有操作ptz的工具

我不确定是否需要集中注意力。在VIF主页上,它似乎显示为焦点移动

我不知道要获取和编辑什么值,所以我会上传它

即使在调整虹膜(光圈)值时,降低该值也可以,但如果调整+,该值也不会发生很好的变化

在这种情况下,我认为

ptz=mycam.create_imaging_service()

如果您通过ptz.GetOptions()查看选项,Iris的最大值为0,最小值为-22

media=mycam.create\u media\u service()

media_profile=media.GetVideoSources()[0]

这里,相机的图像设置加载了GetVideoSources。从这个值,在成像。曝光

有具有当前虹膜值的虹膜、具有虹膜最大值的MaxIris和具有最小值的MinIris

如果当前虹膜值为-5,MinIris取-22,而MaxIris取当前虹膜值-5

看起来,即使我每次加载它时都带上更改的值,它也不会更改,但如果您知道如何修复它,请

@api_view(['POST'])
def getMovePTZ(request):
    logger.debug("getMovePTZ start : %s", request.data)
    ptz_type = request.data.get('data')['ptz_type']
    ptz_direction = request.data.get('data')['ptz_direction']
    ptz_active = request.data.get('data')['ptz_active']

    Min = {}
    Max = {}

    if ptz_type == 'iris':
        # Create img service object
        ptz = mycam.create_imaging_service()
        imgrequest = ptz.create_type('GetImagingSettings')
        # Get target profile
        media_profile = media.GetVideoSources()[0]
        imgrequest.VideoSourceToken = media_profile.token
        img_configuration_options = ptz.GetOptions(imgrequest)

        moverequest = ptz.create_type('SetImagingSettings')
        moverequest.VideoSourceToken = media_profile.token
        if moverequest.ImagingSettings is None:
            moverequest.ImagingSettings = ptz.GetImagingSettings({'VideoSourceToken': media_profile.token})
            Min['iris'] = img_configuration_options.Exposure.Iris.Min
            Max['iris'] = img_configuration_options.Exposure.Iris.Max
    else:
        # Create ptz service object
        ptz = mycam.create_ptz_service()
        ptzrequest = ptz.create_type('GetConfigurationOptions')
        # Get target profile
        media_profile = media.GetProfiles()[0]
        ptzrequest.ConfigurationToken = media_profile.PTZConfiguration.token
        ptz_configuration_options = ptz.GetConfigurationOptions(ptzrequest)
        moverequest = ptz.create_type('ContinuousMove')
        moverequest.ProfileToken = media_profile.token
        if moverequest.Velocity is None:
            moverequest.Velocity = ptz.GetStatus({'ProfileToken': media_profile.token}).Position
            moverequest.Velocity.PanTilt.space = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].URI
            moverequest.Velocity.Zoom.space = ptz_configuration_options.Spaces.ContinuousZoomVelocitySpace[0].URI
    direction = {
        'panning': move_panning,
        'upleft': move_upleft,
        'up': move_up,
        'upright': move_upright,
        'left': move_left,
        'right': move_right,
        'downleft': move_downleft,
        'down': move_down,
        'downright': move_downright,
        'wide': zoom_wide,
        'tele': zoom_tele,
        'in': iris_in,
        'out': iris_out,
    }
    func = direction[ptz_direction]
    if ptz_type == 'iris':
        func(ptz, moverequest, ptz_active)
    else:
        func(ptz, moverequest, Min, Max)
    return Response(None)


def ptz_move(ptz, request, active):
    if active:
        ptz.ContinuousMove(request)
    else:
        ptz.Stop({'ProfileToken': request.ProfileToken})


def move_panning(ptz, request, active):
    request.Velocity.PanTilt.x = XMOVE
    request.Velocity.PanTilt.y = 0
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_up(ptz, request, active):
    request.Velocity.PanTilt.y = YMOVE
    request.Velocity.PanTilt.x = 0
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_down(ptz, request, active):
    request.Velocity.PanTilt.y = -YMOVE
    request.Velocity.PanTilt.x = 0
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_right(ptz, request, active):
    request.Velocity.PanTilt.x = XMOVE
    request.Velocity.PanTilt.y = 0
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_left(ptz, request, active):
    request.Velocity.PanTilt.x = -XMOVE
    request.Velocity.PanTilt.y = 0
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_upleft(ptz, request, active):
    request.Velocity.PanTilt.x = -XMOVE
    request.Velocity.PanTilt.y = YMOVE
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_upright(ptz, request, active):
    request.Velocity.PanTilt.x = XMOVE
    request.Velocity.PanTilt.y = YMOVE
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_downleft(ptz, request, active):
    request.Velocity.PanTilt.x = -XMOVE
    request.Velocity.PanTilt.y = -YMOVE
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def move_downright(ptz, request, active):
    request.Velocity.PanTilt.x = XMOVE
    request.Velocity.PanTilt.y = -YMOVE
    request.Velocity.Zoom.x = 0
    ptz_move(ptz, request, active)


def zoom_wide(ptz, request, active):
    request.Velocity.Zoom.x = -ZMOVE
    request.Velocity.PanTilt.x = 0
    request.Velocity.PanTilt.y = 0
    ptz_move(ptz, request, active)


def zoom_tele(ptz, request, active):
    request.Velocity.Zoom.x = ZMOVE
    request.Velocity.PanTilt.x = 0
    request.Velocity.PanTilt.y = 0
    ptz_move(ptz, request, active)


def iris_in(ptz, request, Min, Max):
    request.ImagingSettings.Exposure.Iris -= 1
    if request.ImagingSettings.Exposure.Iris < Min['iris']:
        request.ImagingSettings.Exposure.Iris = Min['iris']
    ptz.SetImagingSettings(request)


def iris_out(ptz, request, Min, Max):
    request.ImagingSettings.Exposure.Iris += 1
    if request.ImagingSettings.Exposure.Iris > Max['iris']:
        request.ImagingSettings.Exposure.Iris = Max['iris']
    ptz.SetImagingSettings(request)

Tags: irismoverequestdeftypecreateprofilemedia

热门问题