Merhaba arkadaşlar, Mobilhanem.com sitemizde Python ile Görüntü İşleme Dersleri eğitim serisine kaldığımız yerden devam ediyoruz. Geçen dersimizde OpenCv’de Video Çözünürlüğü ve Skalalama İşleminden bahsettik. Python ile Görüntü İşleme dersinde bu hafta ise Video Kaydetme ve Döndürme İşlemi konularından bahsedeceğiz. Eğer bir önceki dersimizi inceleme fırsatınız olmadıysa OpenCv’de Video Çözünürlüğü ve Skalalama İşlemi dersimize buradan ulaşabilirsiniz
Temel Video ve Kamera İşlemleri dersimizde işleyeceğimiz konu başlıklarını tekrar sıralayalım.
Kameradan Görüntü Alma ve Video Okuma İşlemiVideo Boyutlandırma ve Gri Tonlama İşlemiVideo Çözünürlüğü ve Skalalama İşlemiVideo Kaydetme ve Döndürme İşlemi
Listemizin son maddesine geldik. Bu dersimiz ile Temel Video ve Kamera İşlemleri konumuzu bitiriyoruz. Bu haftaki konumuz olan Video Kaydetme ve Döndürme İşlemi dersine başlayabiliriz.
Video Kaydetme ve Döndürme İşlemi
Öncelikle yeni bir Python çalışma dosyası açalım ve kütüphanemizi çalışma dosyamıza dahil edelim.
import cv2
OpenCv kütüphanesini dahil ettikten sonra kameradan görüntü alma işlemini gerçekleştiricek kod satırımızı yazalım.
import cv2 kamera = cv2.VideoCapture(0)
Bu kısımdan itibaren video kaydetme işleminde OpenCv’nin bize sağlamış olduğu bize fourcc (Four character code) kod çözücüyü kullanacağız. Peki nedir bu fourcc ?
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.
import cv2 kamera = cv2.VideoCapture(0) fourcc=cv2.VideoWriter_fourcc(*'XVID')
Yukarıda gördüğünüz üzere fourcc algoritmamızı ve türünü tanımladık.
import cv2 kamera = cv2.VideoCapture(0) fourcc=cv2.VideoWriter_fourcc(*'XVID') videoKayit=cv2.VideoWriter('video.avi',fourrcc,9.0,(640,480))
Tanımlama yaptıktan sonra yazdırmanın diğer bir adımında videoKayit adında değişken oluşturduk. Bu kısımda gördüğünüz üzere değişkenimize aktardığımız VideoWriter fonksiyonumuz 4 adet parametre aldı. İlk parametremiz kayıt edilecek olan videonun ismi ve uzantısı, ikinci parametre kullanacağımız fourcc algoritmamız, üçüncü parametremiz saniyedeki çerçeve oranı (FPS [Frame Per Second]), dördüncü ve son parametremiz ise kaydedilecek olan videonun çözünürlük oranlarıdır.
import cv2 kamera = cv2.VideoCapture(0) fourrcc = cv2.VideoWriter_fourcc(*'XVID') videoKayit = cv2.VideoWriter('video.avi', fourrcc, 9.0, (640, 480)) while (kamera.isOpened()): # No-1 ret, bilgisayarKamerasi = kamera.read() # No-2 if ret == True: # No-3 videoKayit.write(bilgisayarKamerasi) # No-4 cv2.imshow('Kaydediliyor..', bilgisayarKamerasi) # No-5 if cv2.waitKey(1) & 0xFF == ord('x'): # No-6 break kamera.release() videoKayit.release() cv2.destroyAllWindows()
Gerekli tanımlamalarımızı yaptıktan sonra oluşturduğumuz döngü kamera açık olduğu sürece (#No-1) bilgisayar kameramızdan görüntüyü okuyacaktır (#No-2). Görüntü alınmaya devam ettiği sürece (#No-3) alınan görüntü videoKayit değişkenindeki parametreleri baz alarak kayıt işlemini devam ettirecektir (#No-4). Ayrıca imshow komutu ile kaydedilen pencereyi ekranda görüntüleyeceğiz (#No-5) . Daha sonra klavyeden x tuşuna bastığımız anda kayıt işlemi sonlandırılıp sistem kapatılacaktır (#No-6). Son olarak release komutu ile işlemlerimiz sonlandırılacaktır.
Yukarıdaki videoda gördüğünüz üzere video kaydetme işlemimiz başarıyla gerçekleştirildi.
Video Döndürme
Gelin şimdi de kısaca video döndürme işlemini gerçekleştirelim. Burada Opencv’nin flip fonksiyonunu kullanacağız.
import cv2 kamera = cv2.VideoCapture(0) fourrcc = cv2.VideoWriter_fourcc(*'XVID') videoKayit = cv2.VideoWriter('video.avi', fourrcc, 9.0, (640, 480)) while (kamera.isOpened()): ret, bilgisayarKamerasi = kamera.read() if ret == True: bilgisayarKamerasi = cv2.flip(bilgisayarKamerasi, -1) # NO-0 videoKayit.write(bilgisayarKamerasi) cv2.imshow('Kaydediliyor..', bilgisayarKamerasi) if cv2.waitKey(1) & 0xFF == ord('x'): break kamera.release() videoKayit.release() cv2.destroyAllWindows()
Yukarıda gördüğünüz üzere No-0 ile işaretlenmiş kod satırında kameradan aldığımız görüntüyü flip fonksiyonuna gönderdik. Flip fonksiyonunun ilk parametresi alınan görüntü olurken, ikinci parametresi ise döndürme değerleridir. Bu değerler için aşağıdaki maddelendirmeyi inceleyebilirsiniz.
- Görüntüyü X ekseni çevresinde çevirmek için 0 (Sıfır) (dikey çevirme)
- Y ekseni çevresinde döndürme için 1 (yatay çevirme)
- Her iki eksenin etrafında döndürmek için -1
Mobilhanem.com da Python ile Görüntü İşleme serisinde bir dersin daha sonuna geldik. Bu hafta Python ile Görüntü İşleme dersimizde Video Kaydetme ve Döndürme İşlemin‘den bahsettik. Umarım sizin için faydalı bir yazı olmuştur. Bir sonraki yeni bir ders başlığımız olan OpenCv’de Filtreleme İşlemleri dersinde görüşmek üzere. Eksik ya da yanlış gördüğünüz bir şey varsa lütfen iletişime geçmekten çekinmeyin. Sorularınızı buradan sorabilirsiniz.
Tüm Görüntü İşleme Dersleri için tıklayınız.
21