C++ opencv nesne tanıma

Cohen

New Member
Katılım
8 Ağu 2013
Mesajlar
1,801
Tepkime puanı
0
Puanları
0
<strong><span style="text-decoration: underline;">Cascade Sınıflandırıcı</span></strong>

<strong><span style="text-decoration: underline;">Amaç</span></strong>

<strong>Bu örnekte sizin öğrenecekleriniz:</strong>

<strong>• Bir video oynatılırken nesneleri algılamak için </strong><strong>CascadeClassifier </strong><strong>sınıfını kullanın .Özellikle biz bu fonksiyonu kullanacağız</strong>

<strong>–bir xml sınıflandırıcı dosyasını yükleyin</strong><strong>. Bu bir Haar veya LBP sınıflandırıcı olabilir</strong>

<strong>– Tanıma gerçekleştirmek için </strong><strong>detectMultiScale </strong><strong>kullanın.</strong>

<strong><span style="text-decoration: underline;">Teorisi.</span></strong>

<strong><span style="text-decoration: underline;">Kod</span></strong>

<strong>bu kodun satırları aşağıdaki gibidir isterseniz,isterseninz </strong><strong><a href= "http://code.opencv.org/svn/opencv/trunk/opencv/samples/cpp/tutorial_code/objectDetection/objectDetection.cpp">http://code.opencv.org/svn/opencv/trunk/opencv/samples/cpp/tutorial_code/objectDetection/objectDetection.cpp</a> indirebilirsiniz</strong>



<em>#include "opencv2/objdetect/objdetect.hpp"</em>

<em>#include "opencv2/highgui/highgui.hpp"</em>

<em>#include "opencv2/imgproc/imgproc.hpp"</em>

<em>#include <iostream></em>

<em>#include <stdio.h></em>

<strong>using namespace </strong>std;

<strong>using namespace </strong>cv;

<em>/** Fonksiyon Başlıkları */</em>

<strong>**** </strong>detectAndDisplay( Mat frame );

<em>/** Global değişkenler */</em>

String face_cascade_name = "haarcascade_frontalface_alt.xml";

String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";

CascadeClassifier face_cascade;

CascadeClassifier eyes_cascade;

string window_name = "Capture - Face detection";

RNG rng(12345);

<em>/** main fonksiyonu*/</em>

<strong>int </strong>main( <strong>int </strong>argc, <strong>const </strong><strong>char</strong>** argv )

{

CvCapture* capture;

Mat frame;

<em>//--1. video görüntüsü yükleniyor</em>

<strong>if</strong>( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading<strong>\\n</strong>"); <strong>return </strong>-1; };

<strong>if</strong>( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading<strong>\\n</strong>"); <strong>return </strong>-1; };

<em>//-- 2. Video görüntüsü okunuyor</em>

capture = cvCaptureFromCAM( -1 );

<strong>if</strong>( capture )

{

<strong>while</strong>( <strong>true </strong>)

{

frame = cvQueryFrame( capture );

<strong><em>//-- 3. Sınıflandırıcıyı çerveve(frame) uygulanıyor</em></strong>

if( !frame.empty() )

{ detectAndDisplay( frame ); }

else

{ printf(" --(!) No captured frame -- Break!"); break; }

int c = waitKey(10);

if( (char)c == ’c’ ) { break; }

}

}

return 0;

}

<em>/** @fonksiyon tanıma ve gösterme*/</em>

**** detectAndDisplay( Mat frame )

{

std::vector<Rect> faces;

Mat frame_gray;

cvtColor( frame, frame_gray, CV_BGR2GRAY );

equalizeHist( frame_gray, frame_gray );

<em>//-- Yüz tanınıyor</em>

face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );

for( int i = 0; i < faces.size(); i++ )

{

Point center( faces.x + faces.width*0.5, faces.y + faces.height*0.5 );

ellipse( frame, center, Size( faces.width*0.5, faces.height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 Mat faceROI = frame_gray( faces );

std::vector<Rect> eyes;

<em>//-- Her bir yüzdeki gözleri algılar</em>

eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );

for( int j = 0; j < eyes.size(); j++ )

{

Point center( faces.x + eyes[j].x + eyes[j].width*0.5, faces.y + eyes[j].y + eyes[j].height*0.5 );

int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );

circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );

}

}

<em>//-- Ne varsa gösterir</em>

imshow( window_name, frame );

}



<strong> </strong><strong><span style="text-decoration: underline;">Açıklama</span></strong>

<strong><span style="text-decoration: underline;">Sonuç</span></strong>

<strong><span style="text-decoration: underline;">1. </span></strong><strong>İşte yukarıdaki kodu çalıştıran ve kamera olarak bir webcam kamerası kullanan video görüntüsünün bir sonucudur:</strong><strong></strong>

<a href= "http://tinypic.com?ref=29fou88" target="_blank"><img src= "http://i50.tinypic.com/29fou88.png" alt="Image and video hosting by TinyPic" border="0" /></a>
 
Üst Alt