Esempio n. 1
0
        continue
        
    seen_services.append(service.getXAddrs()[0])
    parsed = urllib.parse.urlparse(service.getXAddrs()[0])
    parts =  parsed.netloc.split(':')
    ip = parts[0]
    if len(parts) > 1:
        port = parts[1]
    else:
        port = 80
        
    for authinfo in try_auth:
        try:
            print("Trying ONVIFCamera({ip}, {port}, {user}, {passwd})".format(
                ip=ip, port=port, user=authinfo[0], passwd=authinfo[1]))
            mycam = ONVIFCamera(ip, port, authinfo[0], authinfo[1])
        except ONVIFError as e:
            print("Got error {}".format(e))
            continue
    
        print("=> Scopes:")
        scopes = service.getScopes()
        for scope in scopes:
            print("  {}({})".format(type(scope),repr(scope)))

        print("=> Streams:")
        media_service = mycam.create_media_service()
        profiles = media_service.GetProfiles()
        for profile in profiles:
            try:
                params = media_service.create_type('GetStreamUri')
Esempio n. 2
0
        # option 2
        # else:
        #     angle_calib_y = (angle_calib_y - (-0.348))*2/1.133 - 1
        # print('angle_calib_y: ', angle_calib_y)

        ptz_object.move_abs(angle_calib, angle_calib_y, 0.2)


if __name__ == '__main__':

    import sys

    # get the config params
    config = yaml.safe_load(open("config.yml"))
    config_user = yaml.safe_load(open("config_user.yml"))

    # Define the onvif device
    onvif_device = ONVIFCamera(config_user['ip'], 80, config_user['login'],
                               config_user['password'],
                               'python-onvif-zeep/wsdl/')

    # create the ptz class
    ptz_object = PTZ(onvif_device)

    app = QtWidgets.QApplication(sys.argv)
    window = Window()
    window.setGeometry(200, 200, 900, 700)
    window.show()
    sys.exit(app.exec_())
Esempio n. 3
0
import cv2
import numpy	

from time import sleep
from matplotlib import pyplot as plt

#Удаление данной ошибки pythonvalue() not implemented
import zeep
from onvif import ONVIFCamera, ONVIFService
def zeep_pythonvalue(self, xmlvalue):
    return xmlvalue
zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue

#Подключение к камере
from onvif import ONVIFCamera
mycam = ONVIFCamera('192.168.15.43', 80, 'admin', 'Supervisor')

#Получаем поток
str=cv2.VideoCapture('rtsp://192.168.15.43:554/2')

#Создаём гистограмму
fig=plt.figure(figsize=(2, 2))
color = ('b','g','r')
ret,frame=str.read()
cv2.imshow('qwerty',frame)
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv], [0,1], None, [180, 256], [0, 180, 0, 256]) #Оттенок 180 Насыщенность 256
fig.add_subplot(2, 2, 1)
plt.imshow(hist,interpolation = 'nearest')

fig.add_subplot(2, 2, 2)
Esempio n. 4
0
from time import sleep
import zeep
from onvif import ONVIFCamera, ONVIFService


def zeep_pythonvalue(self, xmlvalue):
    return xmlvalue


zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue

# ------------------------------ABSOLUTE MOVE------------------------------
# Initialize camera 42
cam = ONVIFCamera(
    '192.168.15.42', 80, 'agney1919', 'hDzmk0leTN0W',
    '/home/agney/anaconda3/lib/python3.7/site-packages/onvif_zeep-0.2.12-py3.7.egg/onvif/wsdl'
)
# Create media service
media_service = cam.create_media_service()
# Get profiles
profiles = media_service.GetProfiles()
media_profile = profiles[0]
# Create PTZ service
ptz = cam.create_ptz_service()
# Get ptz absolute move option
request_absolute_move = ptz.create_type("AbsoluteMove")
request_absolute_move.ProfileToken = media_profile.token


# Get Ptz Position
def get_ptz_position():
Esempio n. 5
0
    print('stop move!')
    request.Velocity.PanTilt.x = 0
    request.Velocity.PanTilt.y = 0
    perform_move(ptz, request, timeout)


def callback_position(msg):
    global max_T, min_T
    print("receive mgs:" + str(msg.data))
    min_T = msg.data[0]
    max_T = msg.data[1]


#云台控制初始化
# def continuous_move():
mycam = ONVIFCamera('192.168.1.108', 80, 'admin', 'admin123')
# Create media service object
media = mycam.create_media_service()
# Create ptz service object
ptz = mycam.create_ptz_service()

# Get target profile
zeep.xsd.simple.AnySimpleType.pythonvalue = zeep_pythonvalue
media_profile = media.GetProfiles()[0]

# Get PTZ configuration options for getting continuous move range
request = ptz.create_type('GetConfigurationOptions')
request.ConfigurationToken = media_profile.PTZConfiguration.token
ptz_configuration_options = ptz.GetConfigurationOptions(request)

request = ptz.create_type('ContinuousMove')
Esempio n. 6
0
    def __init__(self):

        # reading config

        path = os.getcwd() + '/engine/utils/config.py'
        try:
            d = open(path, 'r')
            print('opening config successful')
        except IOError:
            print('error while opening config, loading default config')
            d = open(os.getcwd() + '/engine/utils/defaultConfig.py', 'r')
        dconfig = d.read()
        config = literal_eval(dconfig)

        # dont touch this

        zeep.xsd.simple.AnySimpleType.pythonvalue = self.zeep_pythonvalue

        # getting ip-port-log-pass-orientation-zoom from config

        ip = config.get('IP')
        port = config.get('port')
        login = config.get('login')
        password = config.get('password')
        self.UseRightThird = config.get('right')
        #zoom = config.get('zoom')
        """ if code above doesnt work this the hardcoded version
        ip = '192.168.11.43'
        port = 80
        login = '******'
        password = '******'
        self.UseRightThird = False
        """

        mycam = ONVIFCamera(ip, port, login, password)
        media = mycam.create_media_service()

        profiles = media.GetProfiles()
        createP = True
        profileNo = None
        for i in range(len(profiles)):
            profile = profiles[i]
            if profile.Name == 'trackingProfile':
                createP = False
                profileNo = i
                print('Profile already exists')
        if createP:
            print('Profile not found, creating new profile')
            media.CreateProfile('trackingProfile')
            self.profile = media.GetProfiles()[len(media.GetProfiles()) - 1]

            #adding video source configuration to the profile
            vidsrc = media.GetVideoSourceConfigurations()[0]
            addVidSrc = media.create_type('AddVideoSourceConfiguration')
            addVidSrc.ProfileToken = self.profile.token
            addVidSrc.ConfigurationToken = vidsrc.token
            media.AddVideoSourceConfiguration(addVidSrc)
            print('Video source config set')

            #adding video analytics configuration to the profile
            try:
                vidan = media.GetVideoAnalyticsConfigurations()[0]
                addVidAn = media.create_type('AddVideoAnalyticsConfiguration')
                addVidAn.ProfileToken = self.profile.token
                addVidAn.ConfigurationToken = vidan.token
                media.AddVideoAnalyticsConfiguration(addVidAn)
                print('Video analytics config set')
            except:
                print('Couldnt set video analytics')

            #adding PTZ configuration to the profile
            self.ptz = mycam.create_ptz_service()
            ptzc = self.ptz.GetConfigurations()[0]
            addPTZ = media.create_type('AddPTZConfiguration')
            addPTZ.ProfileToken = self.profile.token
            addPTZ.ConfigurationToken = ptzc.token
            media.AddPTZConfiguration(addPTZ)
            print('PTZ config set')

            #adding video encoder configuration to the profile
            vEncoderConfig = media.GetVideoEncoderConfigurations()[
                len(media.GetVideoEncoderConfigurations()) - 1]
            options = media.GetVideoEncoderConfigurationOptions()
            try:
                if options.JPEG:
                    print('JPEG encoding exists')
                    vEncoderConfig.Encoding = 'JPEG'
                    opIndex = None
                    for count in range(len(options.JPEG.ResolutionsAvailable)):
                        if options.JPEG.ResolutionsAvailable[
                                count].Width == 1280 and options.JPEG.ResolutionsAvailable[
                                    count].Height == 720:
                            opIndex = count
                    if opIndex == None:
                        for count in range(
                                len(options.JPEG.ResolutionsAvailable)):
                            if options.JPEG.ResolutionsAvailable[
                                    count].Width > 700 and options.JPEG.ResolutionsAvailable[
                                        count].Width < 1281:
                                opIndex = count
                                break
                    if opIndex == None:
                        opIndex = len(options.JPEG.ResolutionsAvailable) - 1
                    vEncoderConfig.Resolution.Width = options.JPEG.ResolutionsAvailable[
                        opIndex].Width
                    vEncoderConfig.Resolution.Height = options.JPEG.ResolutionsAvailable[
                        opIndex].Height
                    print('Width = ', vEncoderConfig.Resolution.Width,
                          '; Height = ', vEncoderConfig.Resolution.Height)
                    vEncoderConfig.RateControl.FrameRateLimit = 4
                    vEncoderConfig.Quality = options.QualityRange.Max
                    print('after quality setting')
            except:
                print('JPEG encoding doesnt exist')
                vEncoderConfig.Resolution.Width = 1280
                vEncoderConfig.Resolution.Height = 720
                vEncoderConfig.RateControl.FrameRateLimit = 4
                vEncoderConfig.Quality = options.QualityRange.Max
            setVideoEncode = media.create_type('SetVideoEncoderConfiguration')
            print('type created')
            setVideoEncode.ForcePersistence = True
            setVideoEncode.Configuration = vEncoderConfig
            print('setvideoencode ready for setting')
            #media.SetVideoEncoderConfiguration(setVideoEncode)
            print('setvideoencoder success')
            addVideoEncode = media.create_type('AddVideoEncoderConfiguration')
            addVideoEncode.ProfileToken = self.profile.token
            addVideoEncode.ConfigurationToken = vEncoderConfig.token
            # not setting the video encoder because of broken onvif python3 implementation
            #media.AddVideoEncoderConfiguration(addVideoEncode)
            print('Video encoder set')
        else:
            self.profile = media.GetProfiles()[profileNo]
            print('Profile selected')

        # get height - width of the frame to use in move module

        self.width = self.profile.VideoEncoderConfiguration.Resolution.Width
        print('Got width = ', self.width)
        self.height = self.profile.VideoEncoderConfiguration.Resolution.Height
        print('Codec = ', self.profile.VideoEncoderConfiguration.Encoding)
        print(
            'FPS = ',
            self.profile.VideoEncoderConfiguration.RateControl.FrameRateLimit)

        self.token = self.profile.token
        self.ptz = mycam.create_ptz_service()

        # getting current absolute pantilt coordinates

        #currentStatus = self.ptz.GetStatus(self.token)
        #absX = currentStatus.Position.PanTilt.x
        #absY = currentStatus.Position.PanTilt.y

        # setting the specified zoom

        #zoomRequest =  {'Position': {'Zoom': {'space': '', 'x': zoom}, 'PanTilt': {'space': '', 'y': absY, 'x': absX}}, 'ProfileToken': self.token}
        #self.ptz.AbsoluteMove(zoomRequest)

        # gets url in a struct

        streamURIStruct = media.GetStreamUri({
            'StreamSetup': {
                'Stream': 'RTP-Unicast',
                'Transport': 'UDP'
            },
            'ProfileToken': self.token
        })

        # the url itself

        self.streamURL = streamURIStruct.Uri
        print(self.streamURL)
Esempio n. 7
0
def continuous_move():
    # import pdb
    # pdb.set_trace()
    # IP Address, port, username, password
    mycam = ONVIFCamera('192.168.1.108', 80, 'admin',
                        '10iLtxyh', '/home/coovi/pCloudDrive/Projects/Jane/Amigos/III/amigos/amigos/onvif/wsdl', no_cache=True)
    # Create media service object
    media = mycam.create_media_service()
    # Create ptz service object
    ptz = mycam.create_ptz_service()
    # print (dir(ptz))
    # Get target profile
    media_profile = media.GetProfiles()[0]
    # print(media_profile[0])
    # Get PTZ configuration options for getting continuous move range
    request = ptz.create_type('GetConfigurationOptions')
    request.ConfigurationToken = media_profile.PTZConfiguration._token
    ptz_configuration_options = ptz.GetConfigurationOptions(request)
    # print(ptz_configuration_options)
    # print('above line 70')
    request = ptz.create_type('ContinuousMove')
    # print(type(request))
    request.ProfileToken = media_profile._token
    # print('Profil_Token:', request.ProfileToken)
    ptz.Stop({'ProfileToken': media_profile._token})

    # NOTE: X and Y are velocity vector; get range of pan and tilt
    global XMAX, XMIN, YMAX, YMIN
    XMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max
    XMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Min
    YMAX = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max
    YMIN = ptz_configuration_options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Min
    # pdb.set_trace()
    # move down initialize as the first starting movement
    move_down(ptz, request, 5)
    sleep(1)  # after moving the camera waits 1 second
    # photo() #taking a photo at the location

    # move right till in next initial position (should be facing tower)
    move_right(ptz, request, 5)

    # move up 45 degrees
    move_up(ptz, request, .5)
    sleep(2)
    # photo()

    # move up
    move_up(ptz, request, .6)
    sleep(2)
    # photo()

    # move left
    move_left(ptz, request, .80)
    sleep(2)
    # photo()

    # move left
    move_left(ptz, request, .70)
    sleep(2)
    # photo()

    # move left
    move_left(ptz, request, .75)
    sleep(2)
Esempio n. 8
0
from onvif import ONVIFCamera
import sys
login = str(sys.argv[1])
password = str(sys.argv[2])
port = str(sys.argv[3])
old_ip = str(sys.argv[4])
new_ip = str(sys.argv[5])
print(old_ip, new_ip)


mycam = ONVIFCamera(old_ip, port, login, password, '/scr/scripts/cameras/wsdl')
mycam.devicemgmt.SetNetworkInterfaces(dict(InterfaceToken='eth0', NetworkInterface=dict(
    IPv4=dict(Enabled=True, Manual=[dict(Address=new_ip, PrefixLength=24)], DHCP=False))))

Esempio n. 9
0
    def __init__(self, ip):
        from onvif import ONVIFCamera
        from time import sleep

        print 'IP camera initialization'

        #Several cameras that have been tried  -------------------------------------/home/pi/collarVacas/camara/python-onvif/wsdl
        #Netcat camera (on my local network) Port 8899

        self.mycam = ONVIFCamera(
            ip, 80, 'admin', 'ufro_ufro_ufro',
            '/home/pi/collarVacas/camara/python-onvif/wsdl')
        #self.mycam = ONVIFCamera(ip, 80, 'admin', 'vacas123', '/home/grace/collarVacas/camara/python-onvif/wsdl')
        #This is a demo camera that anyone can use for testing
        #Toshiba IKS-WP816R
        #self.mycam = ONVIFCamera('67.137.21.190', 80, 'toshiba', 'security', '/etc/onvif/wsdl/')

        print 'Connected to ONVIF camera'
        # Create media service object
        self.media = self.mycam.create_media_service()
        print 'Created media service object'
        print
        # Get target profile
        self.media_profile = self.media.GetProfiles()[0]
        # Use the first profile and Profiles have at least one
        token = self.media_profile._token

        #PTZ controls  -------------------------------------------------------------
        print
        # Create ptz service object
        print 'Creating PTZ object'
        self.ptz = self.mycam.create_ptz_service()
        print 'Created PTZ service object'
        print

        #Get available PTZ services
        request = self.ptz.create_type('GetServiceCapabilities')
        Service_Capabilities = self.ptz.GetServiceCapabilities(request)

        #Get PTZ status
        self.status = self.ptz.GetStatus({'ProfileToken': token})

        #requestst =self.ptz.create_type('GetStatus')
        #self.requestst.ProfileToken =self.media_profile.token

        # Get PTZ configuration options for getting option ranges
        request = self.ptz.create_type('GetConfigurationOptions')
        request.ConfigurationToken = self.media_profile.PTZConfiguration._token
        ptz_configuration_options = self.ptz.GetConfigurationOptions(request)
        #        print 'PTZ configuration options:'
        #        print ptz_configuration_options
        #        print

        self.requestc = self.ptz.create_type('ContinuousMove')
        self.requestc.ProfileToken = self.media_profile._token

        self.requesta = self.ptz.create_type('AbsoluteMove')
        self.requesta.ProfileToken = self.media_profile._token
        #        print 'Absolute move options'
        #        print self.requesta
        #        print

        self.requestr = self.ptz.create_type('RelativeMove')
        self.requestr.ProfileToken = self.media_profile._token
        #        print 'Relative move options'
        #        print self.requestr
        #        print

        self.requests = self.ptz.create_type('Stop')
        self.requests.ProfileToken = self.media_profile._token

        self.requestp = self.ptz.create_type('SetPreset')
        self.requestp.ProfileToken = self.media_profile._token

        self.requestg = self.ptz.create_type('GotoPreset')
        self.requestg.ProfileToken = self.media_profile._token

        print 'Initial PTZ stop'
        print
        self.stop()
Esempio n. 10
0
		vec_y = (len_y/(vec/100.0))/100.0
		print str(vec_x)+" : "+str(vec_y)
		request.Velocity.PanTilt._x = vec_x*speed_kof
		request.Velocity.PanTilt._y = vec_y*speed_kof
		ptz.ContinuousMove(request)
	sleep(timeout)


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
head_cascade = cv2.CascadeClassifier('cascadeH5.xml')
profile_cascade = cv2.CascadeClassifier('haarcascade_profileface.xml')
upperbody_cascade = cv2.CascadeClassifier('haarcascade_mcs_upperbody.xml')


print 'conection with camera...'
mycam = ONVIFCamera('192.168.1.102', 80, 'admin', 'Supervisor', '/etc/onvif/wsdl/')
#mycam = ONVIFCamera('172.16.83.102:554', 80, 'admin', 'Supervisor')
#mycam = ONVIFCamera('192.168.13.12', 80, 'admin', 'Supervisor')
media = mycam.create_media_service()
profile = media.GetProfiles()[0]
ptz = mycam.create_ptz_service()
request = ptz.create_type('GetConfigurationOptions')
request.ConfigurationToken = profile.PTZConfiguration._token
ptz_configuration_options = ptz.GetConfigurationOptions(request)
request = ptz.create_type('ContinuousMove')
request.ProfileToken = profile._token
print 'sucsess conection.'

print("starting video stream...")
vs = VideoStream(src='rtsp://192.168.1.102:554/Streaming/Channels/101').start()
#vs = VideoStream(src='rtsp://192.168.13.12:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1').start()
def GetSystemDateAndTime(ip, user='******', password='******'):
    try:
        cam = ONVIFCamera(ip, 80, user, password, '/etc/onvif/wsdl')
        return cam.devicemgmt.GetSystemDateAndTime()
    except ONVIFError as e:
        return None
def GetNetworkInterfaces(ip, user='******', password='******'):
    try:
        cam = ONVIFCamera(ip, 80, user, password, '/etc/onvif/wsdl')
        return cam.devicemgmt.GetNetworkInterfaces()
    except ONVIFError as e:
        return None
def GetHostname(ip, user='******', password='******'):
    try:
        cam = ONVIFCamera(ip, 80, user, password, '/etc/onvif/wsdl/')
        return cam.devicemgmt.GetHostname().Name
    except ONVIFError as e:
        return None
Esempio n. 14
0
import datetime
from onvif import ONVIFCamera

TZ = "CET+1CEST"
mycam = ONVIFCamera('192.168.86.219', 8899, 'admin', 'admin', '/home/pi/wsdl/')

# Get system date and time
date_now = datetime.datetime.utcnow()
dt = mycam.devicemgmt.GetSystemDateAndTime()
tz = dt.TimeZone
year = str(dt.UTCDateTime.Date.Year)
month = str(dt.UTCDateTime.Date.Month)
day = str(dt.UTCDateTime.Date.Day)
hour = str(dt.UTCDateTime.Time.Hour)
minute = str(dt.UTCDateTime.Time.Minute)
second = str(dt.UTCDateTime.Time.Second)

# Create datetime object from string
date_str = year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second 
date_time_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')

# Calculate time difference in seconds and set system time if > 10 seconds
time_diff = int((date_time_obj-date_now).total_seconds())
if time_diff > 10 or time_diff < -10:
	print "time diff("+str(time_diff)+") too big, let's sync"

	time_params = mycam.devicemgmt.create_type('SetSystemDateAndTime')
	time_params.DateTimeType = 'Manual'
	time_params.DaylightSavings = True
	time_params.TimeZone.TZ = TZ 
	time_params.UTCDateTime.Date.Year = date_now.year