Bu yazı kapsamında bir dizi içerisindeki değerlerin lokal maksimum/minimum noktalarını bulan algoritmayı açıklayıp, C++ ile implementasyonunu gerçekleştireceğiz. OpenCV ile hareket tespiti, takibi ve yapılan hareketin tanınmasına yönelik hobi amaçlı gerçekleştirdiğim bir proje dahilinde böyle bir ihtiyaç ortaya çıktı ve ben de projenin bu kısmını paylaşmak istedim. Örneğin şöyle bir dizimiz olduğunu farzedelim ve bu dizinin değerlerini grafik üzerinde gösterelim.
Sayfalar
▼
22 Aralık 2017 Cuma
14 Aralık 2017 Perşembe
RabbitMQ C++ ve Python uygulamaları
RabbitMQ, kendi sitesindeki ifadeye göre en yaygın kullanılan açık kaynak mesaj aracısıdır. Birçok işletim sisteminde ve popüler tüm programlama dillerinde çalışabilir. Faklı uygulamalar arasında asenkron iletişim kurulmasını sağlar. ApacheQPid, ActiveMQ, ZeroMQ gibi farklı alternatif sistemler olduğunu da belirtelim. Temel mantık şu şekildedir: Bir üretici(producer) iletilecek mesajı örneğin postayı kargo firmasına bırakır. Kargo firması yani RabbitMQ ise bu mesajın ilgili alıcı(consumer) tarafından alınmasını sağlar.
21 Ekim 2017 Cumartesi
Python - Selective Search Segmentation
Segmentasyonda amaç bir görüntüdeki farklı nesneleri ayırt edebilmek için her bir piksele bir sınıf değeri atamaktır. Yani görüntüdeki şekil ya da renk olarak birbirlerinden ayrılan her bir kapalı alan içerisindeki piksellere aynı sınıf değeri atama işlemidir. Nesne tanıma ise bir görüntüde aranan bir nesneyi bulma işlemidir.
17 Ekim 2017 Salı
Keras LSTM ile Zaman Serisi Tahmini
Daha önceki bir yazımda ARIMA ile zaman serisi tahminine dair bir örnek paylaşmıştım. Bu yazı kapsamında ise Keras LSTM katmanı kullanarak zaman serisi tahmini yapan bir uygulama gerçekleştireceğim. LSTM ile ilgili daha ayrıntılı bilgi almak için, benim de bu yazıya referans olarak kullandığım derindelimavi adresindeki yazıyı okuyabilirsiniz.
28 Eylül 2017 Perşembe
Keras ile Derin Öğrenmeye Giriş - Sınıflama Örneği
Keras Tensorflow ya da Theano kütüphaneleri üzerinde çalışan Python ile yazılmış yüksek seviye bir API'dir. Kullanıcıyı daha düşük seviyedeki bu kütüphanelerin karmaşıklığından kurtararak, daha basit şekilde yapay sinir ağı modellerinin oluşturulması ve eğitilmesine olanak sağlar. Keras kurulumunu daha önceki bir yazımda anlatmıştım, kurulum için bu yazıyı inceleyebilirsiniz.
9 Ağustos 2017 Çarşamba
Python - OpenCV Hit The Ball - Top sektirmece :)
A mini "hit the ball" game was implemented by using OpenCV and numpy libraries of Python. If you want to move your head and do a few tricks with the ball :) while sitting at your home or office, you can download the .py files (codes) at the end of this page and run it.
3 Ağustos 2017 Perşembe
Python Tensorflow ile Keras (derin öğrenme kütüphanesi) kurulumu
Keras, Theano ya da Tensorflow üzerine kurulabilen bir derin öğrenme kütüphanesidir. Keras 'ın daha düşük seviye olan ve kullanımı biraz daha karmaşık olan bu kütüphaneler ile modeller tanımlama ve eğitme işlemlerini daha kullanıcı dostu hale getirdiğini söyleyebiliriz.
28 Temmuz 2017 Cuma
Python - Zaman Serisi İnceleme ve ARIMA ile Tahmin
Bu yazı kapsamında zaman serisi analizine giriş ve ARIMA modeli ile zamana bağımlı bir değişkenin değerinin nasıl tahmin edilebileceğine dair bir örnek paylaşacağım. Kullanacağımız örnek veri setini indirmek için tıklayınız.
7 Temmuz 2017 Cuma
Python - Veri Analizi ve Görselleştirilmesi
Bu yazı kapsamında bir dizi değişken ve bu değişkenlere bağlı bir hedef "y" değişkeninden oluşan örnek bir veri seti üzerinde analiz çalışması yapılmış; ekstrem değer (outlier) , sabit değer içeren değişkenler ve seçilen herhangi bir değişkenin (sütunun) hedef y değişkeni ile ilişkisine dair çıkarımlar ve grafik üzerinde görselleştirilmeler gerçekleştirilmiştir.
6 Temmuz 2017 Perşembe
Python - Pandas groupby/aggregate - LabelEncoder - LabelBinarizer
Daha önceki yazımızda Pandas kütüphanesine bir giriş yapmıştık. Bu yazı kapsamında ise Pandas ile alakalı bir kaç bilgi daha verdikten sonra kategorik verileri dönüştürmek için scikit-learn kütüphanesinin LabelEncoder ve LabelBinarizer metotlarını inceleyeceğiz.
Python - Pandas ile Temel İşlemler
Pandas Python programlama dili için geliştirilmiş açık kaynaklı, kullanımı kolay, yüksek performanslı bir veri yapısı ve analizi kütüphanesidir. Bu yazı kapsamında Pandas ile .csv uzantılı dosyanın nasıl okunacağı, veri seti üzerinde temel bazı işlemlerin nasıl yapılacağı ve görselleştirmeye dair örnekler paylaşacağım.
15 Haziran 2017 Perşembe
C++ Akıllı İşaretçiler (Smart Pointers)
Smart
pointer C++ standart kütüphanesinde #include
<memory>
header dosyasında tanımlıdır ve amacı kaynak yönetiminin
otomatik gerçekleştirilmesini sağlamaktır. Pointer 'lar hafızada
belirli bir alanın adresini gösterir ve bu alanda verinin tutulması
için hafızada yer açma ve ilgili veri ile işlem bittiğinde bu
verinin silinmesi sorumluluğu programcıya aittir. Smart pointer
larda ise hafızanın boşaltılması işlemi otomatik olarak uygun
bir zamanda gerçekleştirilir.Uygun zaman biraz ucu açık bir
kavram tabi ki, isterseniz şimdi bir örnek üzerinden normal (raw)
pointer ile smart pointer farkını, hafızanın nasıl otomatik
silindiğine dair bir örnek üzerinden görelim;
18 Mayıs 2017 Perşembe
C++ Boost.Log kütüphanesinin kullanımı (Boost Log Tutorial)
Boost C++ için geliştirilmiş içerik
bakımından çok zengin bir kütüphaneler topluluğudur. Bu yazı
kapsamında boost kütüphanelerinden birisi olan boost.Log
kullanımına dair basit bir örnek gerçekleştirilmiştir. Log alma
işlemi, bir yazılımın gerçekleştirdiği temel işlemler
ile ilgili bazı bilgilerin dosyaya kaydedilmesidir. Böylelikle
uygulama ile ilgili birşeyler yanlış gittiğinde log dosyasındaki
veriler incelenerek uygulamanın davranışı analiz edilip gerekli
düzeltmeler yapılmasına yardımcı olunabilir. Boost.Log
kütüphanesini projemizde kullanabilmek için kaynak kodları
indirip derlememiz gerekmektedir. Bunun sebebi; Boost
kütüphanelerinden bazıları sadece header eklenerek kullanılabilir
iken, bazı kütüphanelerin kullanılması için ise kaynak kodun
derlenmesi gerekmektedir.
5 Mayıs 2017 Cuma
C++ SignalR İstemci Uygulaması
SignalR, bağlı olan istemciler arasında gerçek zamanlı haberleşme altyapısı sağlayan bir frameworkdür. Http tabanlı çalışır ve asenkron haberleşmenin kalıcı olmasını/kopmadan devam etmesini sağlar. SignalR ile bağlantı kurulumu için konfigürasyon ve bağlantı durumunu sorgulamak gibi işler kolaylaşır ve bu gibi temel işler kütüphane tarafından otomatik gerçekleştirilir .NET uygulamaları ve Javascript ile SignalR kullanımına dair örnekler internette bir hayli mevcut. Ben bu yazı kapsamında SignalR'ı C++ ile kullanarak C# uygulaması ile haberleşme sağlayan bir örnek gerçekleştireceğim.
C++
SignalR Client uygulaması için kurulumun nasıl yapıldığı ve
örnek uygulamalar için
: https://github.com/aspnet/SignalR-Client-Cpp
26 Nisan 2017 Çarşamba
Libpcap - Ağ adaptörüne gelen paketlerin yakalanması (C++)
Daha evvelki yazımda libpcap (winpcap) kütüphanesinin kullanımı hakkında kısa bir giriş yapıp, *.pcap uzantılı bir dosyadan paketlerin nasıl okunacağına dair bir örnek paylaşmıştım.
Bu yazı kapsamında ise dosyadan değil de ağ adaptörüne gelen paketlerin nasıl elde edileceğine dair kısa bir örnek paylaşacağım. Daha önceki örnekte libpcap kütüphanesini offline modda açıp, yolunu belirttiğimiz .pcap dosyasındaki paketleri okumuştuk. Bu örnekte ise pcap_open_live modunu kullanıp o an adaptöre gelen paketleri yakalayacağız. Bunun için ilk olarak bilgisayarımızdaki ağ adaptörlerini listeleyip, seçilen ağ adaptörünü libpcap kütüphanesine belirtmemiz gerekiyor. Bilgisayarımızdaki ağ adaptörlerini listeleyen C++ kodu aşağıdaki gibidir, yazının sonunda ilgili kodlara ulaşabilirsiniz.
23 Mart 2017 Perşembe
Libpcap Giriş - Ağ paketlerinin yakalanması (network traffic capturing)
Libpcap güçlü bir ağ paket analiz
kütüphanesidir, ağdaki trafiği dinlemeye ve ağa paket göndermeye yarar. http://www.tcpdump.org/
Winpcap ise libpcap 'in windows
versiyonudur, https://www.winpcap.org/
libpcap gelen paketlerin henüz işletim
sistemi tarafından işlenmeden evvel bir kopyasını alır. Böylece
gelen paketler işletim sistemi tarafından herhangi bir işleme tabi
tutulmadan alınmış olur. Libpcap C/C++ ile birlikte kullanılacak
şekilde dizayn edilmiştir fakat Python, Java, C# ile
kullanılabilmesi için de ara birimler (wrapper) geliştirilmiştir.
18 Mart 2017 Cumartesi
C++ map ve unordered_map veri yapıları - Performans kıyaslaması
Map C++ standart kütüphanesinde bulunan bir veri yapısıdır ve ilişkisel verileri saklamak için kullanılır. Yani sırasıyla key (anahtar) ve bu anahtarın değerini ifade eden value elemanları saklanır.
typedef pair<const Key, T> value_type;
map içerisindeki elemanlar key değerine göre eşsizdir ve tüm elemanlar sıralanmış vaziyettedir. 6 Şubat 2017 Pazartesi
MAC OS üzerine Tesseract OCR (Karakter Tanıma) kütüphanesinin kurulumu
Tesseract açık kaynaklı bir OCR(Optical Character Recognition-Optik Karakter Tanıma) motorudur/kütüphanesidir (https://github.com/tesseract-ocr/tesseract/wiki) Tesseract MAC üzerine MacPorts ya da Homebrew aracılığıyla kurulabilir. Tesseract ı homebrew kullanarak kurmak istiyorsak ;
23 Ocak 2017 Pazartesi
Python - OPENCV Yaya Tespiti (Görüntü İşleme)
Yaya tanıma (pedestrian detection)
video takip, kişi davranış analizi, akıllı arabalar için sürücü
destek sistemi gibi farklı uygulamalarda kullanılabilir. Yaya
tespiti probleminde makine öğrenmesi teknikleri yaygın olarak
kullanılmaktadır, bu tekniklerde eğitilmiş sınıflandırıcılar
ile görüntü içerisindeki yaya tespit edilmeye çalışılır.
Sınıflama yapılırken yani bizim örneğimizde görüntüdeki
insanları bulurken, uygun bir sınıflandırıcı bulmak kadar
bulunacak nesneye ait olan seçici/ayırt edici bir özelliğin
(feature) çıkarılabilir olması da çok önemlidir.
Yayaların tanınması probleminde HOG (Histograms of Oriented
Gradient) ile özellik çıkarılması yönteminin başarılı
sonuçlar verdiği gösterilmiştir.
11 Ocak 2017 Çarşamba
C++ inline fonksiyon, önişlemci (preprocessor)
C++'da önişlemci(preprocessor)/önişleme derleme işlemiminin bir parçası değildir, daha önce gerçekleştirilen bir aşamadır. Önişlemci adı üstünde olduğu gibi derleme işleminden önce kaynak kod üzerinde bir takım düzenlemeler/değişiklikler yapar. # karakteri ile başlayan satırlar önişlemci tarafından işlenir.
7 Ocak 2017 Cumartesi
Arduino TFT ekran ve Timer
Şimdiye kadar Görüntü işleme, Python, C++ ile ilgili çeşitli örnekler paylaştım. Bu defa küçük bir farklılık yapıp Arduino ile bir örnek uygulama paylaşmak istiyorum. Gerçekleştirdiğim bu uygulamada Arduino Mega 2560 ve ER_TFTM043_3 lcd ekran kullanılmıştır. Uygulamada amaç tft lcd ekranı sürmek ve bu ekranı timer kullanarak güncellemektir. Bunun için UTFT ve TimerOne kütüphaneleri kullanılmıştır.
(Not: LCD görüntüsü aşağıdaki gibidir, yazının sonunda videoyu da izleyebilirsiniz)
5 Ocak 2017 Perşembe
Operatör Aşırı Yükleme (C++) - Operator Overloading
Operatör aşırı yükleme bir operatörün default tanımlı görevi dışında tanımlanan yeni bir görevi de yapabilecek hale getirilmesidir. Genel olarak syntax şu şekildedir.
type
operator sign (parameters) { /*... body ...*/ }
C++
için aşırı yüklenmesine izin verilen ve verilmeyen oparatörler
şunlardır;