Eine App, um automatisch auf IP-Cams zuzugreifen und Screenshots in einem bestimmten Intervall zu machen

Ich habe ein paar IP-Cams, hauptsächlich Foscams. Einige von ihnen haben einen SD-Steckplatz, andere nicht, und hier beginnt das Problem, da die mit dem SD-Steckplatz das tun können, aber die anderen nicht, es sei denn, ich definiere einen FTP-Ordner, den ich nicht habe.

Ich brauche eine App, die alle n Intervalle automatisch im Hintergrund einen Screenshot von allen definierten Cams macht und lokal speichert. Mein PC läuft 24 Stunden.

Es ist mir egal, ob es sich um eine Win32-App oder eine Windows 10-UWP-App handelt.

Antworten (1)

OpenCV kann dies mit ein wenig Hilfe von python & numpy für Sie erledigen. Aus diesem Grund können Sie eine ipCamera-Klasse erstellen:

import base64
import time
import urllib2

import cv2
import numpy as np


"""
Examples of objects for image frame aquisition from both IP and
physically connected cameras
Requires:
 - opencv (cv2 bindings)
 - numpy
"""

class ipCamera(object):

    def __init__(self, url, user=None, password=None):
        self.url = url
        auth_encoded = base64.encodestring('%s:%s' % (user, password))[:-1]

        self.req = urllib2.Request(self.url)
        self.req.add_header('Authorization', 'Basic %s' % auth_encoded)

    def get_frame(self):
        response = urllib2.urlopen(self.req)
        img_array = np.asarray(bytearray(response.read()), dtype=np.uint8)
        frame = cv2.imdecode(img_array, 1)
        return frame

# Section for physically connected cameras removed

Persönlich würde ich das Obige mit jeder Ihrer Kameras testen, um zu sehen, ob Sie daran etwas ändern müssen. Dann müssen Sie nur noch eine Liste von Instanzen mit Ihrer Liste von Kameras und ihren Benutzernamen und Passwort-Anmeldeinformationen füllen und ein Bild von jeder in einem beliebigen Intervall in einer geeigneten Verzeichnisstruktur abrufen und speichern. Persönlich würde ich das Obige erweitern, um jeder Instanz einen Namen, einen Speicherort usw. zu geben, und eine Methode hinzufügen, um einen Frame in einem geeigneten Format zu erfassen und zu speichern.

  • Kostenlos gratis & Open Source - Gut!
  • Plattformübergreifend - Kann unter Windows 7-10, OS/X, Linux ausgeführt werden, Sie könnten sogar die Verwendung eines RaspberryPi mit angeschlossenem Speichergerät in Betracht ziehen - Gut!
  • Sie müssen ein bisschen Python lernen, aber Python ist viel einfacher zu lernen als C/C++/C# und ist "Batterien enthalten" - Sie müssen nicht losgehen und andere Tools besorgen oder dafür bezahlen - Gut ?
  • Keine GUI, es sei denn, Sie fügen selbst eine hinzu. Es gibt mehrere gute GUI-Tools für Python - Vielleicht nicht so gut!
  • Erweiterbar - Sie könnten Code hinzufügen, um Sie zu warnen, wenn sich mehr als ein bestimmter Prozentsatz gegenüber dem letzten Frame geändert hat. Es gibt sogar Beispiele im Internet, wie Sie dieselben Tools verwenden können, um personenähnliche Objekte in Bildern usw. zu erkennen. - Könnte sein Sehr gut!

Haftungsausschluss: Der obige Originalcode wurde am 12. Mai 2013 von Tristan Hearn an einen Github- Gist gepostet . Ich kann nicht loben, dass ich ihn selbst geschrieben habe.

Hübsch! aber dem Code fehlt die Logik zum Aufnehmen von Screenshots in einem bestimmten Intervall. Der Code macht im Grunde Screenshots. Ich denke, ich kann das in Python herausfinden oder einfach dieselbe Bibliothek über C # verwenden, die ich besser kenne.
@HeidelBerGensis - Ich habe versucht, in eine gute Richtung zu weisen, anstatt die Anwendung für Sie zu schreiben - ich berechne dafür - wenn Sie mit C # zufriedener sind, kann emgu.com/wiki/index.php/Main_Page hilfreich sein (die python Bindungen werden mit OpenCV ausgeliefert.
danke Kumpel. Ich mag diese Lösung eigentlich, ich habe mich nicht beschwert :) Ich liebe Herausforderungen.
Hab schöne Ferien!
Brillant. Ich habe nie daran gedacht, OpenCV dafür zu verwenden. Aber ist es wirklich für jede IP-Kamera möglich, unabhängig von der Marke? Ich habe einen D-Link und einen billigen chinesischen, bei denen ich beide ihre speziellen Apps verwenden muss, um sie anzusehen. OP: Haben Sie jemals die Logik für Screenshots in bestimmten Intervallen herausgefunden?
@Hack-R Die meisten IP-Kameras verwenden einen der Standards (die häufigste Variante ist die Verwendung eines der Streaming-Formate, das normalerweise in MPEG-Container eingeschlossen ist), und mit ein wenig Arbeit können Sie normalerweise OpenCV zum Laufen bringen Sie.