Mephistophelés
Bronz Üye
-
- Katılım
- Eylül 10, 2012
-
- Mesajlar
- 3,744
-
- Tepkime puanı
- 2
-
- Puanları
- 293
-
- Yaş
- 48
<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>
<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>