2016-03-29 29 views
1

Çevrimdışı bir video yüz algılama programı oluşturmaya çalışıyorum. Yüz algılama için örnek kodu kullandım ve iyi çalışıyor. Ancak dlib kütüphanesi doğrudan video üzerinde çalışmadığından (ya da yapıp yapmadığımı bilmiyorum), görüntü yüz tanıma programına çerçeve sağlarım. 20-30 kare video gibi küçük bir video için iyi çalışıyor, ancak daha büyük bir video verildiğinde tampon taşma hatası yaşıyor. Verileri kaldırmam veya bazı dinamik belleği açıkça açmam gerekiyor mu? Yoksa sadece yüz tanıma için birkaç görüntüyü hallediyor mu?dlib kullanarak video yüz tanıma

Aşağıda, kod Dlib bunun için OpenCV entegrasyonu vardır

// Loop over all the images provided on the command line. 
    for (int i = 1; i <= 629; ++i) 
    { 
     //cout << "processing image " << endl; 
     array2d<unsigned char> img; 
     //load_image(img, argv[i]); 
    sprintf(image, "./frame/frame%d.jpg",i); 
    load_image(img, image); 

     pyramid_up(img); 

     // Now tell the face detector to give us a list of bounding boxes 
     // around all the faces it can find in the image. 
     std::vector<rectangle> dets = detector(img); 

     //cout << "Number of faces detected: " << dets.size() << endl; 
    //cout<<i<<"\t"<<dets.size()<<endl; 
     // Now we show the image on the screen and the face detections as 
     // red overlay boxes. 
     win.clear_overlay(); 
     win.set_image(img); 
     win.add_overlay(dets, rgb_pixel(255,0,0)); 

     //cout << "Hit enter to process the next image..." << endl; 
     //cin.get(); 
    } 

cevap

3

pasajı olduğunu. Sen OpenCV fonksiyonları ile video dosyasını okumak ve yüz algılama İşte

için Dlib kullanabilirsiniz

http://dlib.net/webcam_face_pose_ex.cpp.html

Yalnızca

içine

cv::VideoCapture cap(0); 

değişmelidir entegrasyon bu tür bir örnektir

cv::VideoCapture videoCapture; 
videoCapture.open(fileName); 
1

Çerçeveleriniz Büyük, sonra algılama yavaş olacaktır. Çerçevelerinizi yeniden boyutlandırmak ve izleme/algılama işlemini gerçekleştirmek daha iyi olur.

İlgili konular