[PYTHON] Capture de caméra WEB Ver 2

Pour la prise de vue avec Raspberry Pi Je pense que la première chose à faire est de tirer en utilisant le clavier. Cependant, lorsqu'il s'agit de prendre un grand nombre d'images C'est impossible pour les gens ordinaires car il est nécessaire de licencier un grand nombre de personnes. Je l'ai donc créé en pensant qu'il serait plus facile de filmer automatiquement.

Cette fois j'ai fait un subordonné (Sacrifice n ° 1) donc je l'ai fait ensemble

environnement

Raspberry Pi 3 Model B+ os Raspbian(Bastar) Python 3.7.3 opencv 4.1.0.25 Caméra d'occasion ELECOM UCAM-C750FBBK

Bibliothèque

cap_save.py


import cv2
import os
import sys
import datetime  
import RPi.GPIO as GPIO
from time import sleep
import time

Puisque GPIO est utilisé cette fois Je l'ai ajouté à l'ensemble de prise de vue de base J'utilise une minuterie, donc je l'ajoute.

configuration de base

cap_save.py


GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)

Cette fois, j'ai attaché un interrupteur tactile à la planche à pain Puisqu'il est utilisé pour démarrer et terminer la prise de vue, il est réglé de manière à pouvoir être effectué.

Programme de tournage

cap_save.py


def save_frame_camera_cycle(device_num, dir_path, basename, cycle, ext='jpg', delay=1, window_name='frame'):
    cap = cv2.VideoCapture(0)

    if not cap.isOpened():
        return

    os.makedirs(dir_path, exist_ok=True)
    base_path = os.path.join(dir_path, basename)
    
  n = 0
    while True:
        ret, frame = cap.read()
        cv2.imshow(window_name, frame)
        
        if GPIO.input(24) == GPIO.HIGH:
            GPIO.output(25, GPIO.HIGH)
            
            while True:   
                
                ret,frame = cap.read()
                cv2.imshow(window_name, frame)
                key = cv2.waitKey(1) & 0xFF
                if n == cycle:
                    n = 0
                    GPIO.output(25, GPIO.HIGH)
                    cv2.imwrite('{}_{}.{}'.format(base_path, datetime.datetime.now().strftime('%F %T'), ext), frame)
                    print("shoot")
                n += 1
    
                if GPIO.input(22) == GPIO.HIGH:
                    GPIO.output(25, GPIO.LOW)
                    print ("stop")
                    time.sleep(1)
                    break                
        else:
            GPIO.output(25, GPIO.LOW)
            
        if GPIO.input(22) == GPIO.HIGH:
            GPIO.output(25, GPIO.LOW)
            print ("end")
            break
        
    cv2.destroyWindow(window_name)
    GPIO.cleanup()

save_frame_camera_cycle(0,'/home/pi/Desktop/GPIO/test/photo', 'test', 20) 

Appuyez sur l'interrupteur tactile (24) pour tirer toutes les secondes. Appuyez sur l'interrupteur tactile (22) pour arrêter de tirer. Appuyez sur l'interrupteur tactile (24) à l'état arrêté pour reprendre le tir. Appuyez sur l'interrupteur tactile (22) à l'état arrêté pour terminer le tir. La LED (25) s'allume pendant la prise de vue.

Je l'ai fait en recherchant diverses choses, donc je ne comprends pas les détails Je vais bien parce que j'ai pu tirer.

Câblage réel

Le câblage de la maquette est comme ça, basé sur divers matériaux.

2020-09-03 (1).png

Résumé

Je l'ai couru pendant environ 4 heures, mais cela a fonctionné sans s'arrêter. Cependant, il ne s'est pas arrêté automatiquement en précisant le nombre de feuilles. Actuellement en construction.

J'ai fait le tour du WEB de différentes manières, mais je ne sais pas pourquoi cela ne fonctionne pas ces jours-ci

c'est tout.

Recommended Posts

Capture de caméra WEB Ver 2
Capture de caméra WEB Ver3
Capture de caméra WEB
Capture de caméra Python, OpenCV
Capture de caméra avec Python + OpenCV
Obtenez une capture d'écran Web avec python