Vignette is a cool image filter which dramatizes the photos by darkening the periphery of an image to draw attention to the center. It is a cool effect which is heavily employed by wedding photographers all around the world — apparently. Here is what we are going to build:

Original on the left, Vignette filtered on the right — Flickr Public Domain

The filter can be implemented by a simple 2-D Gaussian kernel as you may have guessed. A 2-D Gaussian kernel can be created by matrix multiplication of two 1-D kernels created by OpenCV’s getGaussianKernel method. An example kernel looks like this:


Using RTSP/RTP and FFMPEG Backend on Local Network

Here are the simple steps that will enable you to process frames from the camera of your Android device over your local network. First of all, we need a reliable RTSP server application downloaded. My app of choice is the RTSP Camera Server for this purpose.

On the OpenCV part of things, VideoCapture is able to grab frames from a streaming source. However, we need to pass a streaming backend parameter to the constructor. …


Solutions to Common Installation Problems

Disclaimer

I am aware that it is legally problematic to install MacOS on VMs which do not run on MacOS host. However, as an aspiring developer, I am not ready to commit my finances to an Apple product, well, like any other reasonable human being living in an underdeveloped country. That said, I am using the product as I need to get hands-on experience with non-cross-platform iOS development experience, so it can be considered as “educational purposes”.

“This product installer does not support downgrades”

Most people install the latest VMWare version as they start to create a new setup. However, Unlocker programs…


Listeler için Periyodik Silme İşlemi

Bu problemde listenin içinde her N. elemanın çıkarılmasını sağlayan bir işlev oluşturacağız. Örneğin:

drop [1; 2; 3; 4; 5] 2
=> [1; 3; 5]

Gördüğünüz gibi her ikinci elemanı listeden çıkardık. Problem cümlesinde belirtilmemiş ama oluşturacağımız fonksiyonun periyot parametresine negatif değerler ve sıfır gelebiliyor. İlk olarak çıkarma işlevini gerçekleştiren fonksiyonu gerçekleyelim. İlk olarak önceki yazılarda sıkça başvuracağımız accumulator pattern’i kullanacağımız her çağrım için sayaç değer tutan rekürsif bir iç fonksiyon yazacağız. Sonra da desen eşleştirmelerinde sayaç değeri periyotla karşılaştırarak accumulator listenin içini uygun şekilde dolduracağız. Elimizdeki sonuç listesini terse çevirdiğimizde bize istediğimiz sonucu verecek. …


Liste Elemanlarını Çoklama

Problem 14 ve 15, verilen listenin elemanlarını çoklayan fonksiyonların gerçeklenmesi üzerinedir. Problem 14'de, her elemanın birer kez tekrar edildiği yeni bir liste oluşturmamız istenmektedir.

li = [1; 2; 3; 2]
result = [1; 1; 2; 2; 3; 3; 2; 2]

Problem 15'de ise tekrarlama fonksiyonu tekrarlanma sayısı parametresi alır.

li = [1; 2]
N = 3
result = [1; 1; 1; 2; 2; 2]

Bu iki yapının gerçeklenmesinde daha önce tanımladığımız foldr fonksiyonunu kullanacağız.

Duplicate Fonksiyonunun Gerçeklenmesi

Adım Adım Desen Eşleştirme

duplicate [1; 2]
=> foldr util [1; 2] [] çağrılır. foldr 2 kere çalışır. …


Liste Gruplama Problemi

Merhaba,

Dokuzuncu problem liste elemanlarının sıralanıp aynı olan elemanların gruplanarak alt listeler haline getirilmesini amaçlar. Bu bağlamda, aşağıdaki bağlantıdan erişebileceğiniz sekizinci probleme benzer.

Liste elemanlarının gruplanması işini tanımlamak yerine bir örnek ile açıklamak daha açıklayıcı olacaktır.

li = [1; 3; 2; 5; 2; 3; 1; 1; 3; 3; 2]
sorted = [1; 1; 1; 2; 2; 2; 3; 3; 3; 3; 5]
grouped = [ [1; 1; 1] ; [2; 2; 2] ; [3; 3; 3; 3] ; [5] ]

Bu operasyonu gerçeklemek için önceki yazılarımızda değindiğimiz Reverse, Fold ve Pairwise fonksiyonlarıyla beraber standart kütüphane tarafından sunulan…


N-gram notasyonu bir sekansı ardıl N elemanlı parçalara bölerek gösterme işine denir. Özellikle NLP alanında çokca kullanılan bu notasyon, kelimelerin harflerin veya herhangi bir dizgenin N elemanlı tuple’lar (ya da n sütunlu matrisler) cinsinden ifade edilmesiyle oluşur. Örnek olarak tuple kelimesini 2-gram cinsinden ifade edelim:

"tuple" => [('t', 'u'), ('u', 'p'), ('p', 'l'), ('l', 'e')]

Bu işlem n sayısı değiştirilerek farklı ifadeler üretecek şekilde tekrarlanabilir. Fakat, listelerin 2-gram şeklinde ifade edilmesi (pairwise[çiftler cinsinden] ifade de denir) bir çok problemin çözümünü kolaylaştırdığı için önemlidir ve kendine F#’ın Seq kütüphanesinde yer edinmiştir. Bu yazıda, bahsekonu fonksiyoneliteyi sıfırdan gerçekleyeceğiz.

Kod

Klasik Accumulator desenine başvurarak…


Listeler için Distinct İşleminin Gerçeklenmesi.

Listelerdeki mükerrer değerlerin temizlenmesi programlamada sıkça karşımıza çıkan bir ihtiyaçtır. Tekrar eden değerlerden kurtulmak için çokca kullanılan iki farklı yöntem mevcuttur. Bunlardan en çok kullanılanı listenin HashSet veri yapısına çevrilip sonra listeye geri çevrilmesidir. Bu güzel bir yöntem olmasına rağmen ekstra bir veri yapısına ihtiyaç duyması sebebiyle tercih edilmeyebilir. Bu durumda alternatif olarak liste sıralanıp sonra da ardıl elemanların eşitliğine göre filtrelenebilir. Bu ikinci yöntem programlama mülakatlarında programcının bilgisini ölçmek için sıkça sorulan bir yaklaşımdır. Sekizinci problemin çözümü için bu yöntemi gerçekleyelim.

Bu yazıda Desen Eşleşmesi ifadelerimize ekstra koşullar koymak için kullanabileceğimiz when ifadelerine başvuracağız…


Foldl ve Foldr Gerçeklenmesi

Bir başka yazıda Accumulator tasarım deseninden ve bu desenin uygulanışından bahsettik.

Bu deseni kullanarak listenin bütün elemanlarını toplayan fonksiyonu gerçekleştirelim.

Aynı şekilde listenin bütün elemanlarını çarpan fonksiyonu da gerçekleştirebiliriz.


Liste Palindrom mu?

Bir önceki yazıya aşağıdan erişebilirsiniz.

Kendisi ile tersi aynı olan sekanslara palindrom sekans denir.

Palindromluk testi için listenin tersini kullanarak etkili bir çözüm üretebiliriz. Bu bağlamda, bir önceki yazıdaki liste sırasını tersine döndürme kodunu listeye uygulayabiliriz. Listede hem sağdan hem de soldan ilerleyerek eşitlikleri kontrol edebilir ve eşitsizlik görürsek false döndürürüz. Bu sebeple hem sol listeyi hem sağ listeyi kapsayacak bir desen olması için iki elemanlı bir liste tuple desenine ihtiyacımız var.

Adım Adım Desen Eşleşmesi

----- Senaryo 1isPalindrome [1; 2; 1]
=> isPalindromUtil [1; 2; 1] [1; 2; 1] çağrılır
isPalindromeUtil [1; 2; 1] [1; 2; 1]…

Sıddık Açıl

ITU CS Graduate. EGYM GmbH München

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store