4 Aralık 2017 Pazartesi

OpenCv CascadeClassifier Sınıfı

Giriş
Haar classifier için açıklama şöyle.
A Haar classifier operates on 2D images, both for training and recognition. It requires a set of normalized positive 2D images (with object) and a set of normalized negative 2D images (without object) for training the classifier.
Haarcascade Face detection için kullanılır. Bu sınıf viola-jones algoritmasını kullanır. Açıklaması şöyle.
An alternative to detecting faces using Haar Cascades in OpenCV is to use a Histogram of Oriented Gradients feature detector. HOG-based object detectors can be used for detecting faces, and this is the technique used in some other image processing libraries such as Dlib. A Histogram of Oriented Gradients feature detector stores a 2D grid of local gradients and gradient directions of an image and compares this with a reference grid trained on a data set.
Constructor
Şöyle yaparız.
CascadeClassifier cascade;  
Constructor - xml path
Örnek ver

detectMultiScale metodu
Parametre olarak scaleFactor, minNeighbors, minSize ve flags alır. Sonuç olarak yüzlerin bulunduğu Rectangle dizisini verir.
Örnek
Şöyle yaparız.
std::vector<cv::Rect> faces;
cv::Mat im = ...;

cascade.detectMultiScale(im, faces, 1.1, 2,
  CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT, cv::Size(150,150));
Örnek
Şöyle yaparız.
Mat im = imread("photo.jpg",0); //0 flag for grayscale

vector<Rect> eyes;
cascade.detectMultiScale(im, eyes, 1.2, 3);

for (int i = 0; i < eyes.size(); i++)
{
  Rect r = eyes[i];
  rectangle(im, Point(r.x, r.y), Point(r.x + r.width, r.y+r.height),
            CV_RGB(0,255,0));
}

imshow("im",im);
load metodu
Yükleme işlemi başarılı ise true döner.

Örnek
Şöyle yaparız.
cascade.load("haarcascade_eye.xml");
Örnek
Elimizde bir cv::String olsun
cv::String face_cascade_name = "haarcascade_frontalface_alt.xml";
Şöyle yaparız.
if (cascade.load(face_cascade_name)){
  ...
}

Hiç yorum yok:

Yorum Gönder