概述
实现很简单,需要定制的就三点:
- 分类器模型可以自己训练,也可以用opencv自带的
- 标记方式是圆圈还是方块可以自己决定
- 图片来源可以自定义,不限于摄像头和电脑的本地资源
编译后运行
./opencv_example --cascade="data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="data/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3 data/lena.jpg
源码解释
#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/videoio.hpp"
#include <iostream>
using namespace std;
using namespace cv;
static void help(const char** argv)
{
cout << "nThis program demonstrates the use of cv::CascadeClassifier class to detect objects (Face + eyes). You can use Haar or LBP features.n"
"This classifier can recognize many kinds of rigid objects, once the appropriate classifier is trained.n"
"It's most known use is for faces.n"
"Usage:n"
<< argv[0]
<< " [--cascade=<cascade_path> this is the primary trained classifier such as frontal face]n"
" [--nested-cascade[=nested_cascade_path this an optional secondary classifier such as eyes]]n"
" [--scale=<image scale greater or equal to 1, try 1.3 for example>]n"
" [--try-flip]n"
" [filename|camera_index]nn"
"example:n"
<< argv[0]
<< " --cascade="data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="data/haarcascades/haarcascade_eye_tree_eyeglasses.xml" --scale=1.3nn"
"During execution:ntHit any key to quit.n"
"tUsing OpenCV version " << CV_VERSION << "n" << endl;
}
// 前置声明
void detectAndDraw( Mat& img, CascadeClassifier& cascade,
CascadeClassifier& nestedCascade,
double scale, bool tryflip );
// 定义分类器地址字符串
string cascadeName;
string nestedCascadeName;
int main( int argc, const char** argv )
{
VideoCapture capture;
最后
以上就是机智秋天为你收集整理的学习opencv例子facedetect.cpp的全部内容,希望文章能够帮你解决学习opencv例子facedetect.cpp所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复