Browsing the archives for the Uzun Kod İçerikli category.

Opencv, c İle Nasıl Kullanılır? -Görüntü İşleme- (1)

Açık Kaynak, Programlama, tutorial, Uzun Kod İçerikli, ytulinux

Evet güne hızlı başladım, şimdi de opencv ile bir resim nasıl açılır, nasıl görüntülenir, üzerinde bir iki basit işlem nasıl yapılır gibi şeyleri öğreneceğiz. (Linux için opencv paketini yükleyip, en altta verdiğim parametrelerle derleme yapmanız yeterli. Windows için biraz arama yapmanız gerekecek :) )

Öncelikle her yazıda yaptığımız gibi, konu ile ilgili struct‘ın ne olduğunu görelim. Açtığımız resimler ile ilgili bilgiler (IplImage *) struct’ında tutulur. Şu an yapacağım kopyala yapıştırdan gözünüz korkmasın, hepsini bilmek zorunda değilsiniz. width, widthstep, height, nChannels, depth ve imageData‘yı bilmeniz yeterli, bunlar birazdan açıklanacak.

Continue Reading »

Bu yazı toplamda 5288, bugün ise 0 kez görüntülenmiş

16 Comments

GLib Tek Bağlı Liste ile Örnek Proje, Kelime Sayacı

Açık Kaynak, Programlama, tutorial, Uzun Kod İçerikli, ytulinux

Geçen gün farketmemişim, glib kütüphanesinde tek bağlı liste de bulunuyormuş. Onu da anlatmadan geçmenin pek mantıklı olmayacağını düşündüm, ancak çift bağlı liste ile çoğunlukla aynı özellikleri taşıdığı için örnek bir proje yapıp olayı onun üstünden anlatmak daha mantıklı olacaktır.

Önceki makaleyi okumayanların, http://www.huseyinalb.com/glib/ adresinden okumalarını tavsiye ediyorum. Orada anlatılan bir çok şeyi burada atlayacağımdan emin olabilirsiniz :)

Öncelikle GSList, yani tek bağlı listenin struct‘ına bakalım.

typedef struct {
gpointer data;
GSList *next;
} GSList;

Görüleceği üzere, çift bağlı listeden tek farkı kendisinden önceki elemana atıf vermemesi.

Örnek projemiz, bir dosyadan alınan yazıda bulunan kelimeleri sayıp, miktarlarına göre sıralamak. Öncelikle, önceki anlatımdan bunun önemli bir farkını belirtmekte yarar var. Bu sefer glib’de bulunan hazır fonksiyonlardan tamamıyla faydalanmamız pek mümkün değil, çünkü kendi tanımladığımız bir struct’ı kullanmak zorundayız.

typedef struct
{
char * kelime;
int miktar;
} kelimeTip;

Bu struct’ta kelimeler ve bu kelimelerden kaç tane bulunduğu saklanacak. Okuduğumuz yazıdan her gelen kelime, listede aranacak, eğer zaten varsa listedeki kelimenin miktarı arttırılacak, eğer yoksa listeye eklenecek. Bunun için gereken fonksiyonların prototiplerini yazmak gerekirse;

Continue Reading »

Bu yazı toplamda 4306, bugün ise 2 kez görüntülenmiş

3 Comments

Nesne Tabanlı C

Açık Kaynak, Programlama, tutorial, Uzun Kod İçerikli, ytulinux

Eveeet kim demiş cde nesne tabanlı programlama yapılamaz diye?
Öncelikle nelere ihtiyacımız var onları görelim…

– Struct yapılarını kullanabilme yeteneği
– Bellek allocate etme becerisi (İşaretçiler hakkındaki bilgi de buna dahil sanırım)
– Nesne tabanlı programlama hakkında biraz fikir
– Beş yıllık excel 2025 tecrübesi 😛

Hedef: C programlama diline nesne tabanlı programlama yapma becerisi kazandırmak

Öncelikle yapacağımız programı açıklayalım. Şu bizim genel, öğrenci diye nesne yarat, sonra bunu sınıf diye bir nesneye ekle geyiğini yapacağız. Bunu yaparken nesne kullanacağız. Peki c de nesne nasıl yaratılır?

Öncelikle, nesnelerin aslında bizim c programlama dilimizdeki structların fonksiyon eklenmiş hali olduğunu (kabaca) düşünürsek,

1- Structlarda tuttuğumuz verileri değiştirmeyle ilgili fonksiyonlara ihtiyaç duyacağımızı,
2- Structları yaratmak için constructor işlevini gören fonksiyonlar yazmamız gerektiğini
3- Structları yoketmek için yine birer fonksiyon yazmamız gerektiğini
4- Hiyerarşide üstte yer alan fonksiyonlarda kullandığımız nesnelerin alt nesnelerine direk değil, aradaki nesne vasıtasıyla iş yaptırmamız gerektiğini

Continue Reading »

Bu yazı toplamda 2482, bugün ise 0 kez görüntülenmiş

3 Comments

Assembly ile PGM Dosyasında Kontrast Ayarı

Açık Kaynak, Kategorilenmemiş, Programlama, Uzun Kod İçerikli, ytulinux

Evet arkadaşlar birkaç hafta önce Gnu Assembler ile yapmış olduğum görüntü işleme ödevimi buraya atıyorum. Öncelikle Gnu Assembler için tanımlama/açıklama tarzı birşey yazmam sanırım konuyu açıklığa kavuşturmak açısından iyi olacaktır.

Gnu Assembler, gcc nin de kullandığı, daha çok unix türevi işletim sistemlerinde kullanılan assemblerdır. Terminalden as komutu ile erişilebilir. Yazmış olduğunuz Gnu Assembler imlasına uygun programı derlemek için, önce
as program.s -o program.o
veya gdb ile debug etmek istiyorsanız
as -gstabs program.s -o program.o
diyerek object dosyasına çevirip, sonra da
ld program.o -o program.out
Komutuyla çalıştırılabilir hale çevirebilirsiniz.
Gnu Assembler imlasına gelince, öncelikle default olarak 32 bit mantığına göre yazmamız gerekiyor. Yani 8086 assemblerlarda alıştığımız ax, bx yerine eax, ebx kullanıyoruz ki bunlar dört baytlık hafıza büyüklüğüne sahip. Tabi bu ax, bx ya da bl, ah gibi küçük kısımları kullanamayacağımız anlamına gelmiyor. Örneğin
movl %eax,8(%esp)

evet yazmaçlardan önce yüzde işareti, adres göstermek için parantez kullanılır. esp nin başındaki 8 ise esp+8 anlamına gelir(bu arada esp bizim stack pointerımız, yani sp). l ise long tipi işlem olduğunu belirtir. Sağdaki sola değil,soldaki sağa atanır. (hızlı bir özet oldu, hiç assembler bilmeyene gnu assembler anlatmak değil zaten niyetim, daha önce 8086 masm veya nasm kullananlara yönelik, yoksa bu açıklama uzar gider)

Continue Reading »

Bu yazı toplamda 2419, bugün ise 1 kez görüntülenmiş

6 Comments