Video 4 Linux 2 (v4l2) Bölüm 0 - Ankara Telsiz ve Radyo Amatörleri Kulübü Derneği
Yazar: Tegin Yücel Mayadağlı · Yayımlanmış 8 Temmuz 2017 · Güncellendi 8 Temmuz 2017
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.
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.
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
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.
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.
Aşağıdaki komut kameradan gelen görüntüyü ekrana aktaracaktır.
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.
gcc main.c bmp.c -o 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.
Sonraki yazı 2017 YILI İKİNCİ DÖNEM AMATÖR TELSİZCİLİK SINAVI
Önceki yazı Cache ve DMA ile yazılım geliştirmek