Hedef

Bu makalede maddeler halinde belirtilen hedeflere ulaşmak için python programlama dili ve OpenCV kütüphaneleri kullanılmıştır.

  • codec ve FourCC nedir?
  • Kameradan nasıl video çekilir?
  • Dosyadan video oynatma nasıl yapılır?
  • Video Döndürme nasıl yapılır?
  • Kameradan çekilen videoyu nasıl kaydederiz?

Kullanılacak Fonksiyonlar

  • cv.VideoCapture(*args)
  • cv.flip(src, flipCode, dst)
  • cv.VideoWriter(*args)

Codec ve FourCC Nedir?

OpenCV üzerinde videolarla çalışma yapabilmemiz için codec ve fourcc terimlerinin ne olduğunu bilmemiz gerekmektedir. Bu nedenle video işlemlerine ait örnekler verilmeden önce bu iki terimin kısaca tanımı aşağıda yapılmıştır.

Codec Nedir?

Codec kısaca kod çözücü demektir. Dijital ortamda video dosyalarını, görüntü dosyalarını, ses dosyalarını sıkıştırma ve yeniden açma işlemlerinde kullanılmaktadır.

Videolar yüzlerce görüntünün arka arkaya gösterilmesi ile oluşmaktadır. 720p 60 fps video kaydı alabilen bir kamera saniyede 1280×720 büyüklüğünde 60 adet resim çekerek bu resimleri arka arkaya oynatmaktadır. Dolayısıyla 1 dakikada 360 adet görüntü dosyası oluşacaktır. 10 dakika içinde 3600 görüntü dosyası olacağını düşünürsek dosya boyutu hayli büyüyecektir. Bu nedenle bu görüntüleri sıkıştırmak için birden fazla algoritma geliştirilmiştir. Bu algoritmalar sayesinde verilerimizi sıkıştırabiliriz fakat sıkıştırılan verileri çözebilen bir algoritmaya daha ihtiyacımız olacaktır. Çünkü sıkıştırılan veriler tekrar anlamlı bir veri olarak okunabilsin. İşte bu sıkıştırılan verileri tekrar okumaya yarayan algoritmalar codec olarak isimlendirilmektedir. Yüzlerce codec paketi vardır. Bunlardan bazıları şu şekildedir: mjpg, mpeg, mpg4, xvid, mpeg-4, divx… Codec paketlerinin tamamına buradan ulaşabilirsiniz.

FourCC Nedir?

FourCC (Four character code) medya dosyalarında kullanılan codec’ler için pixel formatlarını, renk formatlarını, sıkıştırma formatlarını standart bir biçimde tanımlamlar. Bu tanımlamayı sadece 4 karakter kullanarak yaptığı için 4CC ya da FourCC adını almıştır. Tanımlamaları sadece ASCII tablosu üzerindeki karakterleri kullanarak yapmaktadır. Buraya tıklayarak video codec’lerini inceleyebilir veya indirebilirsiniz.

Kameradan Video Çekme

Kameradan görüntü alma ve video çekme işlemlerinde veya video dosyaları ile yapılacak işlemler için cv.VideoCapture(*args) sınıfı kullanılmaktadır. Aşağıda kameradan video çekimi yapabilmemiz için bir örnek verilmiştir. Bu örneği inceledikten sonra cv.VideoCapture(*args) sınıfına ait nesnelerin açıklamaları yapılacaktır.



  • cap=cv.VideoCapture(*args) VideoCapture sınıfını oluşturur.
  • cap.isOpened() VideoCapture sınıfını açmayı dener. Hata olup olmadığını kontrol eder. 1 veya 0 ya da True veya False değeri döndürür.
  • cap.release() VideoCapture sınıfını kapatır.

Dosyadan Video Oynatma

Sistem üzerinde kayıtlı video dosyasını oynatmak için aşağıda bir örnek program verilmiştir.



Kameradan Çekilen Videoyu Kaydetme

Görüntüleri kaydetme işlemini sadece cv.imwrite() fonksiyonunu kullanarak yapabiliyorduk. Videoları kaydetmek için ek olarak codec ve fourcc kullanmamız gerekmektedir. Bkz: bu terimler hakkında bilgi yukarıda verilmiştir.

Kameradan nasıl video çekilir ve kaydedilir örnek bir uygulamayla gözlemleyelim.