8.2 KiB
Bir görüntü yakalama - Raspberry Pi
Bu dersin bu bölümünde, Raspberry Pi'nize bir kamera sensörü ekleyecek ve ondan görüntü okuyacaksınız.
Donanım
Raspberry Pi'nin bir kameraya ihtiyacı var.
Kullanacağınız kamera Raspberry Pi Kamera Modülü. Bu kamera, Raspberry Pi ile çalışmak üzere tasarlanmıştır ve Pi üzerinde özel bir konektör aracılığıyla bağlanır.
💁 Bu kamera, Mobil Endüstri İşlemci Arayüzü İttifakı tarafından geliştirilen bir protokol olan Kamera Seri Arayüzü (MIPI-CSI) kullanır. Bu, görüntüleri göndermek için özel bir protokoldür.
Kamerayı bağlama
Kamera, Raspberry Pi'ye bir şerit kablo kullanılarak bağlanabilir.
Görev - kamerayı bağlama
-
Pi'yi kapatın.
-
Kamerayla birlikte gelen şerit kabloyu kameraya bağlayın. Bunu yapmak için, tutucudaki siyah plastik klipsi hafifçe çekerek biraz dışarı çıkarın, ardından kabloyu sokete kaydırın. Mavi taraf lensin dışına, metal pin şeritleri lensin içine bakacak şekilde yerleştirin. Kablo tamamen yerleştirildikten sonra siyah plastik klipsi tekrar yerine itin.
Klipsi nasıl açacağınızı ve kabloyu nasıl yerleştireceğinizi gösteren bir animasyonu Raspberry Pi Kamera Modülü ile Başlangıç Belgelerinde bulabilirsiniz.
-
Grove Base Hat'ı Pi'den çıkarın.
-
Şerit kabloyu Grove Base Hat'taki kamera yuvasından geçirin. Kablonun mavi tarafının A0, A1 gibi analog portlara doğru baktığından emin olun.
-
Şerit kabloyu Pi üzerindeki kamera portuna yerleştirin. Yine siyah plastik klipsi yukarı çekin, kabloyu yerleştirin ve klipsi tekrar yerine itin. Kablonun mavi tarafı USB ve ethernet portlarına doğru bakmalıdır.
-
Grove Base Hat'ı tekrar takın.
Kamerayı programlama
Raspberry Pi artık PiCamera Python kütüphanesini kullanarak kamerayı programlamak için hazır.
Görev - eski kamera modunu etkinleştirme
Ne yazık ki, Raspberry Pi OS Bullseye sürümüyle birlikte işletim sistemiyle gelen kamera yazılımı değişti ve varsayılan olarak PiCamera artık çalışmıyor. Bunun yerine PiCamera2 adlı bir alternatif geliştiriliyor, ancak henüz kullanıma hazır değil.
Şimdilik, PiCamera'nın çalışmasına izin vermek için Pi'nizi eski kamera moduna ayarlayabilirsiniz. Kamera soketi varsayılan olarak devre dışıdır, ancak eski kamera yazılımını açmak soketi otomatik olarak etkinleştirir.
-
Pi'yi açın ve başlatılmasını bekleyin.
-
VS Code'u doğrudan Pi üzerinde veya Remote SSH uzantısı aracılığıyla bağlanarak başlatın.
-
Terminalden aşağıdaki komutları çalıştırın:
sudo raspi-config nonint do_legacy 0 sudo reboot
Bu, eski kamera yazılımını etkinleştirmek için bir ayarı değiştirecek ve ardından bu ayarın etkili olması için Pi'yi yeniden başlatacaktır.
-
Pi'nin yeniden başlatılmasını bekleyin ve ardından VS Code'u tekrar başlatın.
Görev - kamerayı programlama
Cihazı programlayın.
-
Terminalden,
pi
kullanıcısının ana dizinindefruit-quality-detector
adlı yeni bir klasör oluşturun. Bu klasördeapp.py
adlı bir dosya oluşturun. -
Bu klasörü VS Code'da açın.
-
Kamera ile etkileşim kurmak için PiCamera Python kütüphanesini kullanabilirsiniz. Bunun için aşağıdaki komutla Pip paketini yükleyin:
pip3 install picamera
-
app.py
dosyanıza aşağıdaki kodu ekleyin:import io import time from picamera import PiCamera
Bu kod,
PiCamera
kütüphanesi dahil olmak üzere gerekli bazı kütüphaneleri içe aktarır. -
Kamerayı başlatmak için aşağıdaki kodu ekleyin:
camera = PiCamera() camera.resolution = (640, 480) camera.rotation = 0 time.sleep(2)
Bu kod, bir PiCamera nesnesi oluşturur ve çözünürlüğü 640x480 olarak ayarlar. Daha yüksek çözünürlükler desteklenir (3280x2464'e kadar), ancak görüntü sınıflandırıcı çok daha küçük görüntülerde (227x227) çalıştığı için daha büyük görüntüleri yakalamaya ve göndermeye gerek yoktur.
camera.rotation = 0
satırı görüntünün dönüşünü ayarlar. Şerit kablo kameranın altına gelir, ancak kameranız sınıflandırmak istediğiniz öğeye daha kolay yönelmesi için döndürülmüşse, bu satırı döndürme derecesine göre değiştirebilirsiniz.Örneğin, şerit kabloyu bir şeyin üzerine asarak kameranın üst kısmında olacak şekilde yerleştirirseniz, dönüşü 180 olarak ayarlayın:
camera.rotation = 180
Kamera başlatılmak için birkaç saniye alır, bu nedenle
time.sleep(2)
satırı eklenmiştir. -
Görüntüyü ikili veri olarak yakalamak için aşağıdaki kodu ekleyin:
image = io.BytesIO() camera.capture(image, 'jpeg') image.seek(0)
Bu kod, ikili verileri depolamak için bir
BytesIO
nesnesi oluşturur. Görüntü kameradan bir JPEG dosyası olarak okunur ve bu nesneye kaydedilir. Bu nesne, daha fazla veri gerektiğinde sona yazılabilmesi için bir konum göstergesine sahiptir, bu nedenleimage.seek(0)
satırı bu konumu başlangıca geri taşır, böylece tüm veri daha sonra okunabilir. -
Bunun altına, görüntüyü bir dosyaya kaydetmek için aşağıdaki kodu ekleyin:
with open('image.jpg', 'wb') as image_file: image_file.write(image.read())
Bu kod, yazma için
image.jpg
adlı bir dosya açar, ardındanBytesIO
nesnesinden tüm veriyi okur ve dosyaya yazar.💁 Görüntüyü doğrudan bir dosyaya yakalayabilirsiniz,
camera.capture
çağrısına dosya adını geçirerek. Bu dersin ilerleyen bölümlerinde görüntüyü görüntü sınıflandırıcınıza gönderebilmek içinBytesIO
nesnesi kullanılmıştır. -
Kamerayı bir şeye doğrultun ve bu kodu çalıştırın.
-
Bir görüntü yakalanacak ve mevcut klasörde
image.jpg
olarak kaydedilecektir. Bu dosyayı VS Code gezgininde göreceksiniz. Dosyayı seçerek görüntüyü görüntüleyin. Döndürme gerekiyorsa,camera.rotation = 0
satırını gerektiği gibi güncelleyin ve başka bir fotoğraf çekin.
💁 Bu kodu code-camera/pi klasöründe bulabilirsiniz.
😀 Kamera programınız başarılı oldu!
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.