opencv 10 DPM测试用例(cascade_detect_sequence) vs2015

01 资源

OpenCV自带的DPM测试用例,opencv_contrib\modules\dpm\samples\cascade_detect_sequence.cpp。cascade_detect_sequence.cpp可以检测图像中的人物,用矩形标出。
该测试用例需要模型文件inriaperson.xml
opencv_contrib/modules/dpm/samples/data/inriaperson.xml
需要检测的图片集。这里图片文件使用dlib库的测试图片,不太合适,仅做代码通过性测试。

D:/git/dlib/examples/faces/2007_007763.jpg
D:/git/dlib/examples/faces/2008_001009.jpg
D:/git/dlib/examples/faces/2008_001322.jpg
D:/git/dlib/examples/faces/2008_002079.jpg
D:/git/dlib/examples/faces/2008_002470.jpg
D:/git/dlib/examples/faces/2008_002506.jpg
D:/git/dlib/examples/faces/2008_004176.jpg
D:/git/dlib/examples/faces/2008_007676.jpg
D:/git/dlib/examples/faces/2009_004587.jpg

files.txt文件自己编写,存放在D:/git/dlib/examples/faces目录下。
D:/git/dlib/examples/faces/files.txt

2007_007763.jpg
2008_001009.jpg
2008_001322.jpg
2008_002079.jpg
2008_002470.jpg
2008_002506.jpg
2008_004176.jpg
2008_007676.jpg
2009_004587.jpg

02 编译cascade_detect_sequence

参考opencv01 相对完整的编译opencv3.3.0 win版本,编译opencv3.3.0 vs2015版本。

修改cascade_detect_sequence.cpp中readImageLists函数;添加一句line.erase(line.find_last_not_of('\r') + 1);,去除读取文件时,每行末尾的换行符。

static bool readImageLists( const string &file, vector<string> &imgFileList)
{
    ifstream in(file.c_str(), ios::binary);

    if (in.is_open())
    {
        while (in)
        {
            string line;
            getline(in, line);
            line.erase(line.find_last_not_of('\r') + 1);  // 添加这句,去除读取行尾的换行符
            imgFileList.push_back(line);
        }
        return true;
    }
    else
    {
        cerr << "Invalid image index file: " << file  << endl;
        return false;
    }
}

生成文件:D:\git\opencv\build\v3.3.0\x64\bin\Debug\dpm-example-cascade_detect_sequence.exe

03 cascade_detect_sequence项目配置

设置cascade_detect_sequence项目为启动项。

# 如果路径中有空格,需要使用双引号
配置属性==>调试==>命令参数=../../../../../../opencv_contrib/modules/dpm/samples/data/inriaperson.xml D:/git/dlib/examples/faces
配置属性==>调试==>工作目录=$(OutDir)

opencv 10 DPM测试用例(cascade_detect_sequence) vs2015_第1张图片

04 运行结果

opencv 10 DPM测试用例(cascade_detect_sequence) vs2015_第2张图片

opencv 10 DPM测试用例(cascade_detect_sequence) vs2015_第3张图片

05 DPM使用摄像头实时监测的测试用例(cascade_detect_camera)

这个demo蛮好的,推荐研究下。
设置cascade_detect_camera项目为启动项。

# 如果路径中有空格,需要使用双引号
配置属性==>调试==>命令参数=../../../../../../opencv_contrib/modules/dpm/samples/data/inriaperson.xml
配置属性==>调试==>工作目录=$(OutDir)

测试时,任务距离摄像头稍微远些,让整个人全部进入摄像头视野,正面、45°角都能够识别出来。
opencv 10 DPM测试用例(cascade_detect_sequence) vs2015_第4张图片

你可能感兴趣的:(opencv)