Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python

0. Premier

Si vous souhaitez voir comment les choses que vous faites fonctionner cette fois-ci, veuillez consulter ici (vidéo youtube).

1. Écrivez le processus

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()

La première fonction est celle qui envoie une image à la ligne, que j'ai déjà introduite, donc je vais l'omettre ici. Il est également introduit dans ici (vidéo youtube). Ensuite, cette fois, la différence entre les images est calculée, et si la valeur de pixel est de 3 ou plus, elle est définie sur 255 et le contour y est calculé. Cela évite que même de très petits changements ne soient détectés. Ensuite, ajoutez l'heure en bas à droite pour qu'elle ressemble à une caméra de surveillance et enregistrez-la en tant qu'image. La raison pour laquelle je n'ai pas changé le nom de l'image est que si je la change, beaucoup d'images seront accumulées, et cette fois j'activerai la fonction à envoyer à la ligne immédiatement après l'enregistrement, donc il n'y a pas de problème même si je fais cela. Enfin, répétez ceci avec le cadre à ce moment comme le dernier.

finalement

Comment faire cette caméra de surveillance est également expliqué dans Youtube, alors jetez un œil si vous l'aimez. Si vous avez des questions ou des conseils, veuillez commenter.

Recommended Posts

Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
[Python] Comment rendre une classe itérable
Fractal pour faire et jouer avec Python
Créez un simple OMR (lecteur de feuille de marque) avec Python et OpenCV
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une caméra de surveillance à détection de mouvement avec OpenCV en utilisant une caméra WEB avec Raspberry Pi
Comment lire un fichier CSV avec Python 2/3
Comment créer un dictionnaire avec une structure hiérarchique.
Je veux faire un jeu avec Python
Comment recadrer une image avec Python + OpenCV
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
[Python] Comment gérer les caractères japonais avec openCV
Comment télécharger des fichiers sur Cloud Storage à l'aide de Python [Créer une caméra à point fixe avec Raspberry PI # 1]
Comment faire coexister Python 3.x et 2.x sur Mac (j'ai également inclus opencv en bonus)
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Faisons un outil de veille de commande avec python
Expliquez en détail comment créer un son avec python
Capture de caméra avec Python + OpenCV
Comment faire un jeu de tir avec toio (partie 1)
Essayez de créer un jeu simple avec Python 3 et iPhone
Créer une fonction pour décrire les polices japonaises avec OpenCV
Comment créer un package Python à l'aide de VS Code
Faites une loterie avec Python
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Comment boucler et lire une vidéo gif avec openCV
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
[Python] Comment créer un environnement de serveur Web local avec SimpleHTTPServer et CGIHTTPServer
Comment générer un code QR et un code à barres en Python et le lire normalement ou en temps réel avec OpenCV
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
Une histoire sur la façon dont les utilisateurs de Windows 10 ont créé un environnement pour utiliser OpenCV3 avec Python 3.5
Comment créer un BOT Cisco Webex Teams à l'aide de Flask
Comment installer NPI + envoyer un message à la ligne avec python
Comment convertir un tableau en dictionnaire avec Python [Application]
Associez Python Enum à une fonction pour la rendre appelable
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Comment créer un package Python (écrit pour un stagiaire)
Comment faire un simple jeu Flappy Bird avec Pygame
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Tirez en accéléré à partir d'une caméra PC en utilisant Python, OpenCV
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Briller la vie avec Python et OpenCV
Comment faire une traduction japonais-anglais
Python: comment utiliser async avec
Faisons une interface graphique avec python.
Comment créer un bot slack
Comment créer un robot - Avancé
Comment créer une fonction récursive
Comment démarrer avec Python
Créer un système de recommandation avec python