USB-webcam aansluiten

In plaats van de Raspberry Pi-cameramodule te gebruiken, kan je een standaard USB-webcam gebruiken om foto’s op de Raspberry Pi te maken. Je hebt misschien ergens nog wel een oudje liggen.

Realiseer je wel dat de kwaliteit en configureerbaarheid van de Pi-cameramodule superieur is aan die van een standaard USB-webcam. Voor drie euro (!) heb je er al een. Bovendien moet de Raspberry Pi veel harder werken om de webcam te besturen en er een foto van te maken. Maar voor wie dit wil proberen is hieronder een oplossing beschreven.

Installeer fswebcam
Installeer eerst het fswebcam pakket:

sudo apt install fswebcam

Voeg jouw gebruiker toe aan de videogroep
Ook al gebruik je het standaardgebruikersaccount pi niet, dan nog kan je beter je gebruikersnaam aan de videogroep toevoegen. Doe je dit niet, dan zie je ’toestemming geweigerd’ of je krijgt time-out fouten te zien. Dit is de syntax ervoor.

sudo usermod -a -G video <username>

Voor de gebruiker pi dit :

sudo usermod -a -G video pi

Gebruik de groups opdracht om te controleren of de gebruiker correct aan de groep is toegevoegd .

Basisgebruik
Voer de opdracht in fswebcam gevolgd door een bestandsnaam en er wordt een foto gemaakt met de webcam en opgeslagen onder de opgegeven bestandsnaam:

fswebcam image.jpg

Deze opdracht toont na de opdracht de volgende informatie:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd4
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image.jpg'.
Basic image capture
Foto 352 x 288

Let op de kleine standaardresolutie die wordt gebruikt en de aanwezigheid van een banner met het tijdstempel.

Specificeer resolutie
De webcam die in dit voorbeeld wordt gebruikt, heeft een resolutie van, 1280 x 720 dus gebruik de -r vlag om de resolutie te specificeren waarmee ik de afbeelding wil maken :

fswebcam -r 1280x720 image2.jpg

Deze opdracht toont de volgende informatie:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 1 extraneous bytes before marker 0xd5
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image2.jpg'.
Full resolution image
Foto 1280 x 720

De foto is nu gemaakt met de volledige resolutie van de webcam, met banner.

Geen banner
Wil je geen banner, voeg dan de –no-banner vlag toe:

fswebcam -r 1280x720 --no-banner image3.jpg
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to 'image3.jpg'.
Full resolution image with no banner
Foto zonder banner

De foto is gemaakt met volledige resolutie, zonder banner.

Niet alle webcams zijn geschikt
Het zou mooi zijn, maar niet alle webcams doen het zonder meer. Als de webcam niet met deze commando’s en parameters werkt krijg je de melding:

Unable to find a compatible palette format.

Wellicht ten overvloede, maar je haalt de beste prestaties uit de Raspberry Pi- cameramodule.

Bash-script
Je kunt een Bash-script schrijven dat een foto maakt met de webcam. Het onderstaande script slaat de afbeeldingen op in de /home/pi/webcam directory, dus maak eerst de subdirectory webcam aan met:

mkdir webcam

Om een ​​script te maken, open je de editor naar keuze en schrijf je de volgende voorbeeldcode:

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg

Dit script maakt een foto en geeft het bestand een tijdstempel. Stel dat we het shell-script hebben opgeslagen als webcam.sh. We moeten er nog de juiste permissies aan geven:

chmod +x webcam.sh

Start het programma met:

./webcam.sh

De opdracht wordt uitgevoerd en geeft de uitvoer:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd6
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/home/pi/webcam/2013-06-07_2338.jpg'.

Time-lapse met cron

Je kunt cron gebruiken om het maken van een foto met een bepaald interval te plannen, bijvoorbeeld elke minuut om een ​​time-lapse opname vast te leggen.

Open eerst de cron-tabel om deze te bewerken:

crontab -e

Als je dit voor de eerste keer doet, wordt gevraagd welke editor je wilt gebruiken. Zodra je het bestand in een editor hebt geopend, voeg je de volgende regel toe om elke minuut een foto te maken (verwijzend naar het Bash-script van hierboven):

* * * * * /home/pi/webcam.sh 2>&1

Sla de cron op en sluit af. Je zou het bericht moeten zien:

crontab: installing new crontab

Zorg ervoor dat jouw script niet elke foto opslaat met dezelfde bestandsnaam. Hierdoor wordt de afbeelding elke keer overschreven.

Have A Nice Day!