Video 4 Linux 2 (v4l2) Bölüm 0
Bu bölüm konuya giriş niteliğinde olacak. Bu yüzden kullanacağım araçları tanıtacak, biraz teknik bilgi verecek ve işimizi kolaylaştıracak bmp dosya kaydedicisini kodlayacağız.
Geliştirme ortamı olarak Banana Pi M1+ ve OV5640 kamera kullanıyorum. Fakat siz üzerinde linux işletim sistemi ve kamera bulunan herhangi bir sistem üzerinde çalışabilirsiniz (Raspberry Pi, Orange Pi, linux PC gibi).
Windows üzerinde çalıştığımdan linux dosya sisteminde gezinmek için WinSCP kullanıyorum.
https://winscp.net/eng/download.php
adresinden indirebilirsiniz. Bu program kayıt edeceğimiz resim dosyalarını kolayca windows ortamına sürükle bırak şeklinde aktarıp, resim dosyasını windows ile kolayca açabilmemizi sağlayacak.
Notepad++ sı ise editör olarak kullanacağız.
https://notepad-plus-plus.org
adresinden indirebilirsiniz. WinSCP içerisinde Notepad++ sı editör olarak seçtiğinizde birbirlerine çok uyumlu bir geliştirme ortamı oluşturabiliyorsunuz.
Linux bilgisayarınızın internet bağlantısı olduğundan emin olduktan sonra v4l2 ve C derleyici yükleyin.
apt-get install libv4l-dev v4l-utils libav-tools
apt-get install gcc
Sonra sürücüleri çalıştırın. Banana Pi kullananlar aşağıdaki modülleri yüklemeleri gerekir. Başka bir platformda çalışanlar için modül isimleri farklı olabilir veya boot anında çağırıldıklarından kullanıcı müdahelesi gerekmeyebilir.
modprobe ov5640
modprobe sun4i_csi
Sisteminize monitör veya LCD bağlı ise kod yazmaya başlamadan öncede media player yükleyip sürücülerin ve kameranın çalıştığından emin olun.
apt-get install mplayer
Aşağıdaki komut kameradan gelen görüntüyü ekrana aktaracaktır.
mplayer tv://
Herhangi bir görüntü alamadıysanız, kameranın bağlantılarını ve yukarıda anlatılan işlemleri gözden geçirin.
Bundan sonra elde ettiğimiz görüntüleri windows tarafından tanınacak bir formata çevirmemiz de gerekecek. Çünkü OV5640 bize sadece RGB veya YUV formatında data verecek. Ben YUV üzerinden gidip işi biraz daha karıştırıp ileriki bölümlerde YUV hakkındada daha çok teknik bilgi vermeye çalışacağım.
Kameradan elde edeceğimiz datayı bmp formatına çevireceğiz. Bmp dosya formatı kabaca üç katmandan oluşuyor. İlk katmanda dosya ile ilgili bilgiler yer alıyor. İkinici katmanda ise resim ile ilgili bilgiler yer alıyor. Üçüncü yani sonuncu katmanda ise RGB data bilgisi yer alıyor. Aşağıdaki resimde katmanlar ve içerikleri ayrıntılı bir şekilde gösterilmiştir.
Aşağıda verilen bmp.c ve bmp.h dosyalarını bmp uzantılı dosya oluşturmak için kullanacağız.
Ufak da bir deneme yapalım. 400×400 boyutlarında içerisinde renk barları olan bir veri bloğu oluşturalım ve bu bloğu bmp ye çevirelim.
Derlemek için
gcc main.c bmp.c -o bmpmaker
Çalıştırmak için
./bmpmaker
Oluşturulan resim dosyasını (testimage.bmp) windows da açdığımızda (WinSCP ile aktarıp) aşağıdaki görüntüyü almalıyız.
Devam edecek…