Artık bazı araçlarda şerit yardımcı asistanı da geliyor. Size şeritten çıktığınızda uyarı veriyor veya aynı şerit içinde gitmenizi sağlıyor.
Bunların nasıl yapıldığını merak ettiniz mi? Yazılımla bunu yapmak aslında gayet kolay. EMGU CV yi Visual Studio içinde install edin. Yani solution penceresinde Reference in üzerinde sağ tıklayıp Manage Nuget Packages ı seçin.. Sonra aramada emgu cv yazın gelenlerin için de Emgu Corporation olanı seçip yükleyin..
Proje için elinizde örnek bir video olmalı. Mp4 olabilir ve araç sürerken aracın ön tarafının da çok görünmemesini sağlarsanız çekiminiz yazılım için iyi bir test olabilir. Ben hafta sonu şehir dışında bu tür yazılımları test etmek için örnekler çekmiştim. Siz de benzerini yapabilirsiniz.
Yazılım da bir timer , 2 tane resim box ı ve bir de mp4 ü yüklemek için bir tane buton yeterli..
Yapılacak iş buton ile mp4 seçildikten sonra Emgu.CV.VideoCapture class ından bir instance oluşturmak ve parametre olarak da seçilen mp4 ü göndermek. Burada Timer çok önemli. Yazılım çalışmadan timer disable durumda. Timer ın intervaline 100 veya 200 girebilirsiniz. Amaç 100 milisaniye de bir bir metodu çağırıp orada işlem yapmak. Timer ın event lerine gidip Tick event ine LoopVideo isimli mettodumuzu yazıyoruz ilk ekran tasarımımızda. VideoCapture ı oluşturduktan hemen sonra timer ı da enable yapıyoruz. Ve artık iş LoopVideo metodunda. Her 100 milisaniye de video bitene kadar çağrılacak.
LoopVideo metodu içinde :
Mat buffer = capture.QueryFrame();
Var. Bu her 100 milisaniyede çağrıldığında o an çalışan video dan bir frame alır ve işlem yapar. Genelde Emgu kütüphanesi içinde image ler Image<Bgr, byte> olarak tanımlıdır. Bundan Bitmap vb e çevirmek kolaydır.
Daha sonra bird eye view denilen bir işlem yapılması lazım.Aynı Form class ımız içinde bir perspektif transformer tanımlamamız gerekir.
private PerspectiveTransformer transformer = new PerspectiveTransformer();
işte bununla yazılım içinde transformer.GetBirdEye metodu kullanarak bird eye görüntüleri elde ediyoruz. Ve bu görüntülerin içinde işaretlenen marker larla çalışıp sağ ve sol şerit çizgilerini bulup poly line metodu ile o an gelen frame görüntüsü üstüne çizim yapıp (yani orijinali) o halini ekrandaki video nun olduğu yere basıyoruz. (Aslında ekrandaki resim kutusu içinde video değil video dan aldığımız frame leri gösteriyoruz böylece sanki video oynuyormuş gibi oluyor.) Oluşturduğumuz Bird eye resmini de yine ekrandaki diğer resim kutusuna yolluyoruz. (Bu negative resim gibi görünür. Bir anlamda katmanlarını almış oluruz.)
Tüm yazılımı sadece 200 satır veya daha az kod ile oluşturmak mümkün.
Hatta sağa veya sola fazla kaçtığında uyarı dahi verebilirsiniz !.
Benim testlerim sonucunda oluşturduğum kısa bir Animated GIF I de bu yazıya koyuyorum ki bir fikriniz olsun.
Sağlıcakla kalın.
Selcuk Celik