(İmaj kredisi: Tom’un Donanımı)
HD video kaydı, artık hafife aldığımız bir şey. Aynısı, çok sayıda resmi (ve resmi olmayan) kamera modeli sayesinde Raspberry Pi için de geçerlidir. Picamera2 ile farklı kodlayıcılar kullanarak çeşitli çözünürlüklerde video kaydedebiliriz.
Bu projede, akışı daha düşük çözünürlüklü bir pencerede önizlerken basit bir 1080P video akışının nasıl kaydedileceğini göstereceğiz.
1. Thonny’yi aç ve yeni bir dosya oluşturun. Thonny’yi ana menüde bulabilirsiniz.
2. H264 kodlayıcıyı Picamera2 modülünden içe aktarın.
from picamera2.encoders import H264Encoder
3. Önizleme sınıfıyla birlikte Picamera2 modülünü içe aktarın. Ardından zaman modülünü içe aktarın.
from picamera2 import Picamera2, Preview
import time
4. Bir nesne oluşturun, picam2, Picamera2 modülüne referans vermek ve kamerayı kontrol etmek için kullanılır.
picam2 = Picamera2()
5. Yeni bir nesne oluşturun, video_config ve hareketsiz görüntü çözünürlüğünü (ana) 1920 x 1080 olarak ayarlamak için kullanın. ve 640 x 480 boyutunda bir “alçak” görüntü. Bu alçaltılmış görüntü, bir çekimi çerçevelerken önizleme görüntüsü olarak kullanılır.
video_config = picam2.create_video_configuration(main="size": (1920, 1080), lores="size": (640, 480), display="lores")
6. Yapılandırmayı yükleyin.
picam2.configure(video_config)
7. H264 kodlayıcının bit hızını ayarlayın.
encoder = H264Encoder(bitrate=10000000)
8. Çıktı dosyasını test.h264 olarak ayarlayın. Bu, videoyu içeren bir dosya oluşturacaktır.
output = "test.h264"
9. Önizleme penceresini başlatın, ardından kodlayıcı ayarlarını kullanarak kayda başlayın ve videoyu çıktı dosyasına kaydedin.
picam2.start_preview(Preview.QTGL)
picam2.start_recording(encoder, output)
10. On saniyelik video kaydetmek için uyku modunu kullanın. Önceki kayıt komutu, engelleyici bir kod satırı değildir. Bir uyku komutu kullanarak, saniyenin bir bölümünden sonra kaydın durmasını engelleriz.
time.sleep(10)
11. Kamera kaydını durdurun ve önizleme penceresini kapatın.
picam2.stop_recording()
picam2.stop_preview()
12. Kodu video-test.py olarak kaydedin ve başlatmak için Çalıştır’ı tıklayın. Önizleme penceresi görünecek ve bir video kaydetmek için on saniyeniz olacak.
13. Videoyu görüntüleyin. Test.h264’ü bularak Dosya Yöneticisinde oraya ulaşabilirsiniz. Ve VLC’de oynatmak için video dosyasına çift tıklayın.
Komple Kod Listeleme
from picamera2.encoders import H264Encoder
from picamera2 import Picamera2, Preview
import time
picam2 = Picamera2()
video_config = picam2.create_video_configuration(main="size": (1920, 1080), lores="size": (640, 480), display="lores")
picam2.configure(video_config)
encoder = H264Encoder(bitrate=10000000)
output = "test.h264"
picam2.start_preview(Preview.QTGL)
picam2.start_recording(encoder, output)
time.sleep(10)
picam2.stop_recording()
picam2.stop_preview()
Raspberry Pi’de Resim Çekmek için Tetik Kullanma
Kamera tetikleyicileri, klasik bir Raspberry Pi projesidir. Hayvanların, davetsiz misafirlerin görüntülerini / videolarını çekmek veya isteksiz aile üyelerine şaka yapmak için kullanılırlar. Tetikleyici, Pasif Kızılötesi (PIR) hareket sensörü, ultrasonik sensör veya bizim durumumuzda basit bir basma düğmesi gibi bir sensör olabilir.
Bu projede basit bir tetik aktif kamera tuzağı oluşturacağız. Düğmeye basıyoruz, önizleme penceresini kullanarak çekimi çerçevelendiriyoruz ve dosya, dosya adı olarak mevcut saat ve tarih kullanılarak otomatik olarak Pi’mize kaydediliyor.
Bu proje için kablolama basittir. Düğme, bir devre tahtası ve iki dişi-erkek kablo aracılığıyla GPIO17 ve GND’ye bağlanır.
(İmaj kredisi: Tom’un Donanımı)
1. Thonny’yi aç ve yeni bir dosya oluşturun. Thonny’yi ana menüde bulabilirsiniz.
2. Önizleme sınıfıyla birlikte Picamera2 modülünü içe aktarın. Sonraki zaman modülünü içe aktarın.
from picamera2 import Picamera2, Preview
import time
3. Datetime, GPIO Zero ve Signal modüllerini içe aktarın. Datetime, resim dosya adlarımız için bir zaman damgası oluşturmak için kullanılır. GPIO Zero, basit bir düğme arayüzü için kullanılır. Python kodunun çıkmasını durdurmak için sinyal kullanılır.
from datetime import datetime
from gpiozero import Button
from signal import pause
4. Bir nesne oluşturun, picam2, Picamera2 modülüne referans vermek ve kamerayı kontrol etmek için kullanılır.
picam2 = Picamera2()
5. Bir nesne oluşturun, düğme, ve düğmemizin bağlı olduğu GPIO pinini saklamak için nesneyi kullanın.
button = Button(17)
6. Yeni bir nesne oluşturun, camera_config ve hareketsiz görüntü çözünürlüğünü (ana) 1920 x 1080’ye ve 640 x 480 boyutunda “düşük” bir görüntüye ayarlamak için kullanın. Bu alçaltılmış görüntü, bir çekimi çerçevelerken önizleme görüntüsü olarak kullanılır.
camera_config = picam2.create_still_configuration(main="size": (1920, 1080), lores="size": (640, 480), display="lores")
7. Yapılandırmayı yükleyin.
picam2.configure(camera_config)
8. Bir dizi komutu depolamak için bir işlev oluşturun, yakalama () tetiğe basıldığında çalıştırılacaktır. Fonksiyonun içindeki kod, fonksiyona ait olduğunu göstermek için otomatik olarak girintilenir.
def capture():
9. Bir önizleme penceresi başlatın. Bu, imajımızı çerçevelememizi sağlayacaktır.
picam2.start_preview(Preview.QTGL)
10. Bir nesne, zaman damgası oluşturun, ve tetikleyici olayın saatini ve tarihini saklamak için kullanın.
timestamp = datetime.now().isoformat()
11. Kamerayı başlatın, ardından görüntüyü çerçevelemek için zaman tanımak için iki saniye bekleyin.
picam2.start()
time.sleep(2)
12. Dosya adı olarak geçerli zaman damgasını kullanmak için yakalama dosyasını, nihayetinde görüntü dosyasını ayarlayın.
picam2.capture_file('/home/pi/%s.jpg' % timestamp)
13. Sonunda fonksiyonda önizlemeyi durdur, ve kamerayı durdur.
picam2.stop_preview()
picam2.stop()
14. Bir düğmeye basıldığında tepki vermek için “yakalama” işlevimizi çağırarak GPIO Zero’nun düğme sınıfını kullanın. Nihayet kodun bitmesini önlemek için duraklama() kullanın.
button.when_pressed = capture
pause()
15. Kodu trigger-test.py olarak kaydedin ve kodu başlatmak için Çalıştır’ı tıklayın.
16. düğmesine basın Kamerayı başlatmak ve bir resim çekmek için
17. Sistem Dosya Yöneticisini açın ve görüntülemek için resme çift tıklayın.
Komple Kod Listeleme
from picamera2 import Picamera2, Preview
import time
from datetime import datetime
from gpiozero import Button
from signal import pause
picam2 = Picamera2()
button = Button(17)
camera_config = picam2.create_still_configuration(main="size": (1920, 1080), lores="size": (640, 480), display="lores")
picam2.configure(camera_config)
def capture():
picam2.start_preview(Preview.QTGL)
timestamp = datetime.now().isoformat()
picam2.start()
time.sleep(2)
picam2.capture_file('/home/pi/%s.jpg' % timestamp)
picam2.stop_preview()
picam2.stop()
button.when_pressed = capture
pause()