Video Kaydetme ve Döndürme İşlemi

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 İşlemi
  • Video Boyutlandırma ve Gri Tonlama İşlemi
  • Video Çözünürlüğü ve Skalalama İşlemi
  • Video 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

Yunus Emre Aydın

Yazılım Mühendisi

1 Yorum

  • Merhabalar öncelikle olarak ben kameradan degil de bir videodan görüntüler alıyorum yani benim direk videom ters dönüyor bunu bir çözümü var mı acaba ?

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?