[PYTHON] WEB Kameraaufnahme Ver 2

Für Aufnahmen mit Raspberry Pi Ich denke, dass der erste Ort, an den man gehen muss, das Schießen mit der Tastatur ist. Wenn es jedoch darum geht, eine große Anzahl von Bildern aufzunehmen Für normale Menschen ist es unmöglich, weil es notwendig ist, eine große Anzahl von Menschen zu entlassen. Also habe ich es mit dem Gedanken erstellt, dass es einfacher wäre, automatisch zu schießen.

Diesmal habe ich einen Untergebenen gemacht (Opfer Nr. 1), also habe ich es zusammen gemacht

Umgebung

Raspberry Pi 3 Model B+ os Raspbian(Bastar) Python 3.7.3 opencv 4.1.0.25 Kamera verwendet ELECOM UCAM-C750FBBK

Bibliothek

cap_save.py


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

Dieses Mal werde ich GPIO verwenden Ich habe es dem Basis-Shooting-Set hinzugefügt Ich benutze einen Timer, also füge ich ihn hinzu.

Grundlegende Konfiguration

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)

Diesmal habe ich einen Taktschalter an das Brotbrett angeschlossen Da es zum Starten und Beenden der Aufnahme verwendet wird, ist es so eingestellt, dass es durchgeführt werden kann.

Aufnahmeprogramm

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) 

Drücken Sie den Taktschalter (24), um jede Sekunde zu schießen. Drücken Sie den Taktschalter (22), um die Aufnahme zu beenden. Drücken Sie den Taktschalter (24) im gestoppten Zustand, um die Aufnahme fortzusetzen. Drücken Sie den Taktschalter (22) im gestoppten Zustand, um die Aufnahme zu beenden. Die LED (25) leuchtet während der Aufnahme auf.

Ich habe es geschafft, während ich verschiedene Dinge recherchiert habe, daher verstehe ich die Details nicht Mir geht es gut, weil ich schießen konnte.

Tatsächliche Verkabelung

Die Verkabelung zum Steckbrett basiert auf verschiedenen Materialien.

2020-09-03 (1).png

Zusammenfassung

Ich habe es ungefähr 4 Stunden lang laufen lassen, aber es hat funktioniert, ohne anzuhalten. Es wurde jedoch nicht automatisch gestoppt, indem die Anzahl der Blätter angegeben wurde. Derzeit im Bau.

Ich habe das WEB auf verschiedene Arten bereist, bin mir aber nicht sicher, warum es heutzutage nicht funktioniert

das ist alles.

Recommended Posts

WEB Kameraaufnahme Ver 2
WEB Kameraaufnahme Ver3
WEB Kameraaufnahme
Python, OpenCV-Kameraerfassung
Kameraerfassung mit Python + OpenCV
Holen Sie sich Web-Screen-Capture mit Python