cpp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
cpp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Eylül 2022 Perşembe

Using Pytorch C++ API to extract features with CNN

I continue to enhance the existing courses over Udemy. I have prepared a new video to show how to use Pytorch C++ API.  In this example, We will save a model for feature extraction in the Python, and then use that model in C++.

By using extracted features, we will classify two target objects.

https://www.udemy.com/course/computer-vision-by-using-cpp-and-opencv-with-gpu-support/?couponCode=202209




23 Mart 2021 Salı

UAV Images Dataset (PESMOD) for Moving Object Detection from Moving Cameras

I have prepared a high resolution aerial images dataset for motion detection. This dataset (named PESMOD) consists of challenging images containing small targets compared to other publicly available datasets. You can view the preprint paper comparing two methods in the literature and proposed method which is relatively simple.

https://lnkd.in/dFVyP-E
To download the dataset and compare your own method
https://lnkd.in/d3ASwaC

6 Kasım 2020 Cuma

C++ ile OpenCV CUDA metodlarının kullanımı

Python kullanarak OpenCV ile Görüntü işleme üzerine yayınladığım udemy kurslarına ek olarak, C++ ile OpenCV+CUDA destekli metodları nasıl kullanabileceğimize dair bir başka video serisi daha hazırladım.

28 Şubat 2019 Perşembe

C++ : inheriting constructor - lambda - bind function - variant -clamp


C++ örnekler;
  • inheriting constructor
  • lambda expressions
  • std::bind
  • std::variant (C++17)
  • std::clamp (C++17)

26 Şubat 2019 Salı

C++17 std::optional kullanımı

std::optional C++17 ile eklenmiş yeni bir tiptir. std::optional  kullanarak, bir değer içeren veya null (geçerli değer içermeyen) değere sahip değişkenler tanımlayabilirsiniz. Yani özünde bir değer ve bir değer içerip/içermediğini ifade eden bir flag barındıran bir değişken tanımlayabiliriz. Bu özellik c++ için yaygın kullanılan boost kütüphanesinde zaten uzun yıllardır mevcut idi(boost::optional). Bu yazı kapsamında C++ ile optional kullanımına dair bir örnek paylaşılmıştır.

14 Kasım 2018 Çarşamba

C++ - Memory Leak (Bellek sızıntısı) tespiti

 "Memory leak" yani bellek sızıntısı bir uygulamanın kullandığı hafıza bloğunu serbest bırakmaması sonucunda, kendisi için ayrılan bellek miktarının aşırı şişmesi durumudur. Özellikle uzun süreli çalışan uygulamalarda sistem kaynaklarının aşırı tüketilmesine, dolayısıyla performans kaybına ve aynı zamanda uygulamanın çökmesine sebep olabilmektedir. 

10 Eylül 2018 Pazartesi

C++ - OpenCV Nesne Takip Modülleri

Bu yazı kapsamında sizlere OpenCV içerisindeki nesne takip modüllerinden bahsedeceğim. 

22 Aralık 2017 Cuma

C++ - Dizide lokal maksimum/minimum değerlerinin bulunması


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.

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. 

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. 




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.

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;

6 Aralık 2016 Salı

Blob Detection Using OPENCV (C++)


GitHub (https://github.com/mribrahim/Blob-Detection) to download the codes and  contribute the project

A Blob means a group of connected pixels in an image that share near intensity values. In the image below, the goal is to detect the blobs and identify some properties belong to that blobs, as if regionprobs in Python (http://scikit-image.org/docs/dev/api/skimage.measure.html#skimage.measure.regionprops).

Measure Properties of Regions 

center:                point2f -> Center coordinates of region 
area:                   float -> Number of pixels of region. 
perimeter:          float -> Perimeter of region. 
eccentricity:       float -> Between 1 and 0. (1 for circle) 
solidity:              float -> Between 1 and 0. ( Area / ConvexHullArea ) 
compactness:     float -> Between 1 and 0. ( Area / BoundingRect Area ) -- measure of how close to a rectangle 
mean_intensity:  Vec3b -> mean intensity values of three channel(blue,green,red) of the region 
bounding_box:   Rect -> Bounding box of the region 

9 Kasım 2016 Çarşamba

C++ XML işlemleri


XML, farklı sistemler/yazılımlar arasında veri paylaşımını sağlamak için geliştirilmiş bir standarttır. Böylece paylaşılmak istenen verilerin, standart format kullanılarak yazılımdan bağımsız bir şekilde saklanması ve iletilmesi sağlanır.

C++ ile XML dökümanları oluşturmak ve okuyup ayrıştırmak için çeşitli kütüphaneler mevcuttur. Bunlardan bazıları :