OPENCV İLE OTOMATİK ARABA PLAKA TANINMASI

Slides:



Advertisements
Benzer bir sunumlar
String fonksiyonları:
Advertisements

Dizi Kullanan Örnekler
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Eser SERT, Deniz TAŞKIN, Cem TAŞKIN, Nurşen TOPÇUBAŞI, İrfan KÖPRÜCÜ
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Öğrenilmesi gerekenler: Operatör, operand Öncelik sırası
SINIFLAR Yılmaz Kılıçaslan.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
void medyan(int cevap[]) { int j; siralama(cevap);
İnönü Üniversitesi Bilgisayar Mühendisliği
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
String Diziler(Katarlar)
TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ
Bölüm 8 Yapısal Veri Türleri 3- Yapı (struct). 1 Yapı (struct) Tanımlama struct { int ogrenciNo; double akademikOrtalama; char ogrenciAdi[DIZGI_BOYU],
Tanım Birbirleriyle ilişkili ve bitişik iki ya da daha fazla bellek hücresinden oluşan yapı Örnek dizi tanımı: int tamsayiDizi[10]; tamsayiDizi[0] /*ilk.
P p 8. Ünitede yinelemeli programlamanın teknikleri anlatılmaktadır. p p Gördüğünüz gibi, yinelemeli programlama bir problemin içinde problemin küçük parçalarını.
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
SINIFLAR GİRİŞ Yılmaz Kılıçaslan.
Soru1: Dışardan "%s" format belirteci kullanılarak girilecek 20 elemanlı bir dizinin elemanlarının kaç tanesinin rakam, kaç tanesinin harf ve kaç tanesinin.
Soru1: Bir tanesi tam sayı diğeri string olan iki elemanlı bir struct’ı bir başka struct’a direk kopyalama, memcpy kullanarak kopyalama ve tek tek elemanlarını.
DOSYA İŞLEMLERİ.
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ
Paralel Programlamaya Giriş
SABİT NESNE VE ELEMAN FONKSİYONLAR VE ELEMAN NESNELER
DOSYA İŞLEMLERİ.
Kontrol Yapıları ve Döngüler
GRAPHS ÖZET.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Dizi Elemanlarının Sıralanması
Algoritma & Programlama
Fscanf fonksiyonu fscanf () : Dosyadan bilgiyi okumak ve değişkenlere aktarmak için kullanılır. int fscanf(FILE *dosya, char* format, değişken adres listesi);
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Diziler (Arrays).
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
Temel Giriş/Çıkış Fonksiyonları
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
PROGRAM DENETİM DEYİMLERİ
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
SINIFLAR GİRİŞ Yılmaz Kılıçaslan. Sunum Planı  Bu derste sınıf mekanizmasını şu yönleriyle inceleyeceğiz: –Sınıf kavramının evrimine kısa bir bakış –Bir.
BİL542 PARALEL PROGRAMLAMA
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Veri Yapıları ve Algoritmalar
BİLGİSAYAR programlama II
C. Dennis Ritchie 9 Eylül ö. 12 Ekim 2011.
Hafta2 Rekürsif Algoritmalar
BM-308 Paralel Programlamaya Giriş Bahar 2016 (2. Sunu) (Yrd. Doç. Dr. Deniz Dal)
1- x,y,z koordinatlarına girilen iki nokta arasındaki uzaklığı bulan programı yazın. Her nokta için point adında struct tanımlayın #include struct point.
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
C’de Fonsiyonlar Aslı Ergün.
BÖLÜM 5 POINTER’LER (İŞARETÇİLER)
PROGRAM KONTROL KOMUTLARI 1. if koşulu 2. if else koşulu
İOS PLATFORMUNDA MOBİL TRAFİK CEZA BİLDİRİM UYGULAMASI
Bilgisayar Grafiğine Giriş CS 351. Bilgisayar Grafiği Nedir? ● Geometrik şekillerin Üretilmesi, İşlenmesi ve Depolamasıdır. ● Cisimlerin bilgisayar ekranında.
Sunum transkripti:

OPENCV İLE OTOMATİK ARABA PLAKA TANINMASI irmakci@hotmail.com

OPEN CV NEDİR? 1.OpenCv nin anlamı Açık Kaynak Bilgisayarlı Görme Kütüphanesidir. (Intel® Open Source Computer Vision Library) 2.Çoğu popüler resim işleme ve bilgisayarlı görü algoritmalarını işleyen C ve biraz da C++ fonksiyonlarının toplamıdır

ANAHTAR ÖZELLİKLERİ Karşı platformlar için orta seviyeden yüksek seviyeye 300 den fazla C ve C++ ile yazılmış API vardır. OpenCv hem ticari hem ticari olmayan kullanımlar için ücretsizdir. (Tabii ki kimden aldıgınızı söylerseniz!)

OPEN CV DE TEMEL YAPILAR CvPoint 2D point with integer coordinates typedef struct CvPoint { int x; int y; } CvPoint; /*Yapıcı fonksiyon*/ inline CvPoint cvPoint( int x, int y ); Örnek: CvPoint point = cvPoint(3,4);

CvSize pixel-accurate size of a rectangle typedef struct CvSize { int width; /* dikdörtgen genişliği */ int height; /* dikdörtgen boyu */ } CvSize; /* Yapıcı fonksiyon */ inline CvSize cvSize( int width, int height ); Örnek: CvSize size = cvSize(3,4);

CvRect offset and size of a rectangle typedef struct CvRect { int x; /* sol üst köşe koordinatı int y; /* sol üst köşe koordinatı int width; /* dikdörtgen genişliği */ int height; /* dikdörtgen boyu */ } CvRect; /* Yapıcı fonksiyon */ inline CvRect cvRect( int x, int y, int width, int height ); Örnek: CvRect rect = cvRect(3,4,5,6); printf("x : %d y: %d\n",rect.x,rect.y); printf("w :%d h:%d\n",rect.width,rect.height);

(En çok kullanılan temel yapılardan biri!!!) IplImage typedef struct _IplImage { int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; int alphaChannel; /* ignored by OpenCV */ int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplImage *maskROI; void *imageId; struct _IplTileInfo *tileInfo; int imageSize; char *imageData; /* pointer to aligned image data int widthStep; /* size of aligned image row in bytes */ int BorderMode[4]; int BorderConst[4]; char *imageDataOrigin; } IplImage; Örnek: IplImage* image = cvLoadImage("resim.bmp",0);

OPENCV ÖRNEKLERİ

#include "stdafx.h" #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { IplImage* img = 0; int height,width,step,channels; uchar *data; int i,j,k; char* rice = "rice.tif"; // load an image img=cvLoadImage(rice,-1); if(!img){ printf("Could not load image file: %s\n",argv[1]); exit(0); } // get the image data height = img->height; width = img->width;

step = img->widthStep; channels = img->nChannels; data = (uchar *)img->imageData; printf("Processing a %dx%d image with %d channels\n",height,width,channels); // create a window cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE); cvMoveWindow("mainWin", 100, 100); // invert the image for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++) data[i*step+j*channels+k]=255-data[i*step+j*channels+k]; // show the image cvShowImage("mainWin", img ); // wait for a key cvWaitKey(0); // release the image cvReleaseImage(&img ); return 0; }

ŞİMDİ DE PİRİNÇ SAYALIM…

#include "stdafx.h" #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { IplImage* src; //binary resim olmak zorunda ve //siyah zemin üzerinde beyazlar üzerinde işlem yapar!! src=cvLoadImage("rice.tif",-1); IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 ); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contour = 0; cvThreshold( src, src, 110, 255, CV_THRESH_BINARY );

cvNamedWindow( "Source", 0 ); cvShowImage( "Source", src ); int no =cvFindContours( src, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE ); cvZero( dst ); for( ; contour != 0; contour = contour->h_next ) { CvScalar colorI = CV_RGB( 0, 255, 0 ); CvScalar colorE = CV_RGB( 0, 0, 255 ); cvDrawContours( dst, contour, colorE, colorI, 0, 1, 8 ); } printf("number of contours : %d\n",no); cvNamedWindow( "Components", 0 ); cvShowImage( "Components", dst ); cvWaitKey(0); return 0;

80 tane çıktı (oldukça iyi!!!)

PLAKA TANINMASI Plaka tanıma sistemi park ücretlendirme, yol görüntüleme, güvenlik sistemleri gibi birçok uygulamada önemli rol oynar. Bu projede genel olarak ilk aşamada Türk Plakaları incelenmiştir Kullanılan yöntem aşağıda verilmiştir.

Kurban bayramınızı şimdiden kutlar nice bayramlara vesile olmasını dilerim…