1

オフライン ビデオの顔検出プログラムを作成しようとしています。顔検出にサンプルコードを使用しましたが、うまく機能しています。しかし、dlib ライブラリはビデオで直接動作しないため (または動作するかどうかはわかりません)、画像の顔検出プログラムにフレームを提供しています。20 ~ 30 フレームのビデオなどの小さなビデオの場合は問題なく動作しますが、より大きなビデオを指定すると、バッファ オーバーフロー エラーが発生します。データを削除したり、動的メモリを明示的にクリアしたりする必要がありますか? それとも、顔検出のために少数の画像しか処理しませんか?

以下はコードスニペットです

// 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();
    }
4

2 に答える 2

4

Dlib には、そのための OpenCV 統合があります。OpenCV関数でビデオファイルを読み込み、顔検出にDlibを使用できます

これは、そのような種類の統合のサンプルです

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

あなただけが変わるべきです

cv::VideoCapture cap(0);

の中へ

cv::VideoCapture videoCapture;
videoCapture.open(fileName);
于 2016-05-12T07:12:13.247 に答える