Sıradan USB web kameralarını (web cam) uzaktan izleme ve kayıt amaçlı kullanabilirsiniz. Farklı markalar tarafında üretilmiş çok sayıda USB web kamerası vardır. Raspberry Pi bu kameraların büyük çoğunluğu ile kullanılabilir. Eğer yeni bir web kamerası satın alacaksanız elinux.org[1] sayfasından Raspberry Pi’ın sorunsuz bir şekilde çalışabileceği kamera marka/modellerini kontrol edebilirsiniz. Eğer hâlihazırda elinizde bir USB webcam varsa Raspberry Pi tarafından desteklenip desteklenmediğini kolayca öğrenebilirsiniz. Webcam’i Raspberry Pi’ın USB girişlerinden birisine bağlayın ve terminal ortamında lsusb komutunu çalıştırın:
1 2 3 4 5 6 7 8 9 |
pi@raspberry:~ $ lsusb Bus 001 Device 005: ID 09da:010e A4Tech Co., Ltd. Bus 001 Device 004: ID 09da:0260 A4Tech Co., Ltd. KV-300H Isolation Keyboard Bus 001 Device 006: ID 0ac8:3450 Z-Star Microelectronics Corp. [...] |
Yukarıdaki komut çıktısında, Raspberry Pi’a Z-Star Microelectronics Corp. Marka bir USB aygıtın bağlı ve olduğu tespit edilmiş. Kameranın Raspberry Pi tarafından bir görüntü yakalama aygıtı olarak tanınıp tanınmadığını sınamak için ilgili aygıt dosyasının yaratılıp yaratılmadığını aşağıdaki gibi kontrol edebilirsiniz:
1 2 3 |
pi@raspberry:~ $ ls -la /dev/video* crw-rw-rw-+ 1 root video 81, 0 Nov 30 11:42 /dev/video0 |
Kamerayı sınamak için bir grafik masaüstü uygulaması olan luvcview programını aşağıdaki gibi yükleyip çalıştırabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install luvcview -y pi@raspberry:~ $ export DISPLAY=:0 pi@raspberry:~ $ luvcview luvcview 0.2.6 SDL information: Video driver: x11 A window manager is available Device information: Device path: /dev/video0 Stream settings: Frame format: YUYV (MJPG is not supported by device) Frame size: 640x480 Frame rate: 30 fps ^C Quit signal received. Cleanup done. Exiting ... |
luvcview programını çalıştırmadan önce varsayılan görüntü çıkış aygıtı olarak HDMI’a bağlı monitör seçilmiştir. Eğer terminal ortamını grafik masaüstü üzerinden çalıştırdıysanız DISPLAY=:0 komutunu vermenize gerek yoktur. Luvcview programı varsayılan olarak /dev/vide0 görüntü yakalama cihazına bağlanacak ve grafik masaüstünde bir ön izleme penceresi açacaktır. Ön izlemeyi sonlandırmak için Ctrl+C tuş bileşimine basınız. Eğer, görüntü alabiliyorsanız webcam’iniz Raspberry Pi tarafından sorunsuzca kullanılabilir demektir.
USB Web Kameralarının Güç Tüketimine Dikkat Edin
USB web kamerası çalışması için ihtiyaç duyduğu gücü diğer USB aygıtları gibi (fare, klavye, flash bellek vb.) USB port’larından çekecektir. Eğer yüksek güç ihtiyacı olan bir kamera kullanacaksanız veya çok sayıda kamerayı Raspberry Pi’a bağlayacaksanız, harici güç beslemesi olan bir USB hub’ı kullanmanızı tavsiye ederim. Aksi takdirde kamera ihtiyacı olan akımı USB port’undan sağlayamayacağından düzgün çalışmayacaktır.
USB web kamerasının teknik özelliklerini öğrenmek
uvcdynctrl adlı araç USB webcam’lerin destekledikleri çözünürlük ve saniyedeki kare sayısını (fps) öğrenmek için kullanılabilir. Aracı aşağıdaki gibi yükledikten sonra çalıştırabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install uvcdynctrl -y pi@raspberry:~ $ sudo uvcdynctrl -f -d /dev/video0 [...] Listing available frame formats for device /dev/video0: Pixel format: YUYV (YUYV 4:2:2; MIME type: video/x-raw-yuv) Frame size: 640x480 Frame rates: 30, 20, 15, 10, 5, 1 Frame size: 320x240 Frame intervals: 1/30, 1/20, 1/15, 1/10, 1589/15625, 1/1 Frame size: 160x120 Frame intervals: 1/30, 1/20, 1/15, 1/10, 1589/15625, 1/1 Frame size: 176x144 Frame intervals: 1/30, 1/20, 1/15, 1/10, 1589/15625, 1/1 Frame size: 352x288 Frame intervals: 1/30, 1/20, 1/15, 1/10, 1589/15625, 1/1 |
Yukarıdaki ekran çıktısında /dev/video0 olarak bağlanmış webcam’in görüntü kodlama biçimi (YUYV), çeşitli çözünürlüklerde desteklediği fps (frame per second) değerleri ve her resim karesi (frame) arasındaki bekleme süreleri listelenmiştir. YUYV sıkıştırmayı desteklemeyen bir görüntü biçimidir.
USB web kamerası ile resim kaydetmek
USB web kamerası ile komut satırını kullanarak resim karesi kaydetmek için (png ve jpg) fswebcam adlı aracı kullanabilirsiniz. fswebcam Linux ve Unix türevleri için ufak ve basit bir web kamera uygulamasıdır. Birçok görüntü kaynağından görüntü yakalayıp üzerinde basit değişiklikler yapabilir. Aracı yüklemek için aşağıdaki komutları kullanın:
1 2 3 |
pi@raspberry:~ $ sudo apt update pi@raspberry:~ $ sudo apt install fswebcam –y |
fswebcam varsayılan olarak /dev/video0 kaynağından yakaladığı görüntüyü jpg biçiminde bulunduğu dizine kaydeder. –d seçeneği ile görüntü kaynağı değiştirilebilir.
1 |
pi@raspberry:~ $ fswebcam resim0.jpg -d /dev/video0 |
eğer fswebcam aracını uzak bir terminalden çalıştırıyorsanız varsayılan grafik görüntü çıkış aygıtını HDMI olarak ayarlamak için aşağıdaki komutu çalıştırın:
1 |
pi@raspberry:~ $ export DISPLAY=:0 |
fswebcam çektiği resimlerin alt tarafına varsayılan olarak tarih bilgisinin yer aldığı bir başlık ekler. Bu başlığın eklenmemesini istiyorsanız –no-banner seçeneğini kullanabilirsiniz. Dilerseniz de bu başlığın görsel özelliklerini yeniden tanımlayabilirsiniz. Bunlar dışında fswebcam resmin belli bir yerini kırpabilir (–crop), kayıt çözünürlüğünü değiştirebilir veya resmi çevirebilir. fswebcam’in sessiz olarak çalışmasını isterseniz –q (quiet), arka planda çalışması için de –b (backgrount) seçeneklerinden yararlanabilirsiniz.
USB web kamerası ile timelapse görüntüler kaydetmek
Önceki başlıkta değinilen fswebcam uygulaması ile web kamerasını kullanarak time-lapse görüntüler kaydedebilirsiniz. Bunun için cron servisi biçilmiş kaftandır. Bunun için nano editörünü kullanarak aşağıdaki gib bir kabuk script’i oluşturun:
1 2 3 4 5 6 7 |
pi@raspberry:~ $ nano webcamlapse.sh #!/bin/bash DATE=$(date +"%Y-%m-%d_%H%M") fswebcam /home/pi/webcam/$DATE.jpg –d /dev/video0 --no-banner |
nano editörü ile script’i ev dizinine webcamlapse.sh ismiyle kaydettikten sonra çalıştırma izni verin ve webcam adında bir dizin oluşturun:
1 2 3 |
pi@raspberry:~ $ chmod +x webcamlapse.sh pi@raspberry:~ $ mkdir webcam |
Daha sonra oluşturduğunuz betiğin 1 dakika aralıklarla çalıştırılması için cron tablosuna aşağıdaki girdiyi ekleyin:
1 2 3 |
pi@raspberry:~ $ crontab –e * * * * * /home/pi/webcamlapse.sh 2>&1 |
Bu girdi ile /dev/video0 aygıtından her dakika başında bir resim karesi yakalanacak ve webcam dizinine o anki tarih ve saat bilgisinden oluşan dosya adıyla kaydedilecektir. Bu dosya adlarını hızlandırılmış video’ya çevirmeden önce sıraya sokmak gerekir bunun için aşağıdaki komutu çalıştırıp dosya adlarını sıralı olarak yeniden adlandırabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberry:~ $ cd webcam pi@raspberry:~/webcam $ ls *.jpg | awk 'BEGIN{ a=0 }{ printf "mv %s resim_%04d.jpg\n", $0, a++ }' | bash pi@raspberry:~ $ cd webcam pi@raspberry:~/webcam2 $ ls […] resim_0000.jpg resim_0015.jpg resim_0030.jpg resim_0045.jpg resim_0001.jpg resim_0016.jpg resim_0031.jpg resim_0046.jpg […] |
Dosya adlarını sıraladıktan sonra avconv aracı ile aşağıdaki gibi time lapse video’yu oluşturabilirsiniz:
1 |
pi@raspberry:~/webcam2 $ avconv -r 4 -i resim_%04d.jpg -r 4 -vcodec libx264 -crf 20 -g 15 hizli1.mp4 |
Birden fazla USB webcam’i kullanmak
luvcview ile grafik masaüstünü kolayca bir izleme merkezine dönüştürebilirsiniz. Aşağıdaki gibi birden fazla webcam’in bağlı olduğu durumlarda luvcview’e fazladan seçenekler geçmeniz gerekir. Bu seçeneklerden ilki hangi görüntü yakalama donanımının (webcam’in) kullanılacağını belirten -d (device) seçeneğidir. Bu seçeneğe /dev/video2 şeklinde aygıt dosyasının tam yolu belirtilir. Kamera çözünürlüğünü ayarlamak için ise -s (resolution) seçeneğinden faydalanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
pi@raspberry:~ $ lsusb Bus 001 Device 011: ID 093a:2700 Pixart Imaging, Inc. Bus 001 Device 012: ID 0ac8:303b Z-Star Microelectronics Corp. ZC0303 Webcam Bus 001 Device 008: ID 0ac8:3450 Z-Star Microelectronics Corp. Bus 001 Device 009: ID 0ac8:3450 Z-Star Microelectronics Corp. pi@raspberry:~ $ ls -la /dev/video* crw-rw-rw-+ 1 root video 81, 0 Nov 30 11:42 /dev/video0 crw-rw-rw-+ 1 root video 81, 1 Nov 30 11:42 /dev/video1 crw-rw-rw-+ 1 root video 81, 2 Nov 30 12:11 /dev/video2 crw-rw-rw-+ 1 root video 81, 3 Nov 30 12:11 /dev/video3 pi@raspberry:~ $ luvcview -d /dev/video2 -s 320x240 |
[1] Desteklenen kameraların güncel listesi – https://elinux.org/RPi_USB_Webcams