So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python

0. Zuerst

Wenn Sie sehen möchten, wie die Dinge, die Sie diesmal machen, funktionieren, lesen Sie bitte hier (Youtube-Video).

1. Schreiben Sie den Prozess

security_cam.py


import cv2
from datetime import datetime
import requests
import time

token = 'Your Token'

cap = cv2.VideoCapture(0)
lastframe = None

def send_msg():
    url = 'https://notify-api.line.me/api/notify'
    headers = {'Authorization':'Bearer '+token}
    data = {"message":"Someone in your room."}
    image = '/home/igor-bond/image.jpg'
    file = {'imageFile': open(image, 'rb')}
    r = requests.post(url, headers=headers, params=data, files=file,)
    
while cap.isOpened():
    ret,frame = cap.read()
    if ret == True:
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

        if lastframe is None:
            lastframe = gray.astype("float")
        
        cv2.accumulateWeighted(gray,lastframe,0.6)
        frame_diff = cv2.absdiff(gray,cv2.convertScaleAbs(lastframe))
        thresh = cv2.threshold(frame_diff,3,255,cv2.THRESH_BINARY)[1]
        contours,hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

        for c in contours:
            if cv2.contourArea(c) > 30:
                time.sleep(0.2)
                now = datetime.now()
                img = cv2.resize(frame,(int(frame.shape[1]*0.5),int(frame.shape[0]*0.5)))
                font = cv2.FONT_HERSHEY_SIMPLEX
                cv2.putText(img,f'{now}',(100,350),font,1,(0,0,255),4,cv2.LINE_AA)
                cv2.imwrite('/home/igor-bond/image.jpg',img)
                send_msg()
                lastframe = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY).astype("float")
                break

        cv2.imshow('frame',frame)  
           
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cv2.destroyAllWindows()
cap.release()

Die erste Funktion ist diejenige, die ein Bild an die Zeile sendet, die ich zuvor eingeführt habe, daher werde ich es hier weglassen. Es wird auch in hier (Youtube-Video) vorgestellt. Dieses Mal wird dann die Differenz zwischen den Bildern berechnet, und wenn der Pixelwert 3 oder mehr beträgt, wird er auf 255 gesetzt und die Kontur wird dort berechnet. Dies soll sehr kleine Änderungen verhindern, wenn sie erkannt werden. Fügen Sie dann die Zeit unten rechts hinzu, damit sie wie eine Überwachungskamera aussieht, und speichern Sie sie als Bild. Der Grund, warum ich den Namen des Bildes nicht geändert habe, ist, dass sich beim Ändern viele Bilder ansammeln und dieses Mal die Funktion zum Senden an die Zeile unmittelbar nach dem Speichern aktivieren, sodass es auch dann kein Problem gibt, wenn ich dies tue. Wiederholen Sie dies abschließend mit dem damaligen Frame als letztem.

Schließlich

Wie diese Überwachungskamera hergestellt wird, erfahren Sie auch in Youtube. Schauen Sie also bitte nach, wenn es Ihnen gefällt. Wenn Sie Fragen oder Ratschläge haben, kommentieren Sie bitte.

Recommended Posts

So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
[Python] Wie man eine Klasse iterierbar macht
Fraktal zum Erstellen und Spielen mit Python
Erstellen Sie mit Python und OpenCV ein einfaches OMR (Mark Sheet Reader)
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Lesen einer CSV-Datei mit Python 2/3
So erstellen Sie ein Wörterbuch mit einer hierarchischen Struktur.
Ich möchte ein Spiel mit Python machen
So beschneiden Sie ein Bild mit Python + OpenCV
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, mit Python eine Diedergruppe zu bilden
[Python] Umgang mit japanischen Zeichen mit openCV
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
Wie man Python 3.x und 2.x auf einem Mac koexistiert (ich habe auch opencv als Bonus hinzugefügt)
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Erklären Sie ausführlich, wie Sie mit Python einen Sound erzeugen
Kameraerfassung mit Python + OpenCV
Wie man ein Schießspiel mit toio macht (Teil 1)
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Erstellen Sie mit OpenCV eine Funktion zum Beschreiben japanischer Schriftarten
So erstellen Sie ein Python-Paket mit VS Code
Machen Sie eine Lotterie mit Python
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
So schleifen und spielen Sie ein GIF-Video mit openCV ab
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
So erstellen Sie mit Flask einen BOT für Cisco Webex-Teams
So installieren Sie NPI + Senden Sie eine Nachricht an Python
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Wie man ein einfaches Flappy Bird-Spiel mit Pygame macht
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Nehmen Sie Zeitraffer von einer PC-Kamera mit Python, OpenCV auf
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Leuchtendes Leben mit Python und OpenCV
Wie erstelle ich eine japanisch-englische Übersetzung?
Python: So verwenden Sie Async mit
Lassen Sie uns eine GUI mit Python erstellen.
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
Erste Schritte mit Python
Erstellen Sie ein Empfehlungssystem mit Python