opencv 10 DPM测试用例(cascade_detect_sequence) vs2015

来源:互联网 发布:想在淘宝卖烧鸡 编辑:程序博客网 时间:2024/06/05 19:20

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.jpgD:/git/dlib/examples/faces/2008_001009.jpgD:/git/dlib/examples/faces/2008_001322.jpgD:/git/dlib/examples/faces/2008_002079.jpgD:/git/dlib/examples/faces/2008_002470.jpgD:/git/dlib/examples/faces/2008_002506.jpgD:/git/dlib/examples/faces/2008_004176.jpgD:/git/dlib/examples/faces/2008_007676.jpgD:/git/dlib/examples/faces/2009_004587.jpg

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

2007_007763.jpg2008_001009.jpg2008_001322.jpg2008_002079.jpg2008_002470.jpg2008_002506.jpg2008_004176.jpg2008_007676.jpg2009_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)

这里写图片描述

04 运行结果

这里写图片描述

这里写图片描述

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

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

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

测试时,任务距离摄像头稍微远些,让整个人全部进入摄像头视野,正面、45°角都能够识别出来。
这里写图片描述