最简单的使用

级联分类器使用方法特别简单,调入一个文件即可,也可以做训练,具体训练方法参考其他,这里是如何使用

侦测前脸

使用训练好的文件haarcascade_frontalface_alt.xml,注意不要单独拷贝这个文件,opencv 还需要etc下面的其他文件

#include <vector>
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <opencv2/opencv.hpp>
#include "opencv2/objdetect.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/core/utils/trace.hpp>
using std::cout;
using std::cerr;
using std::vector;
using std::string;
using namespace cv;
// Detect and draw detected object boxes on image
//
void detectAndDraw(cv::Mat& img,                               // input imageCascadeClassifier* classifier,  // preloaded classifierdouble scale = 1.3) {                       // resize image by ...// Just some pretty colors to draw with//enum { BLUE, AQUA, CYAN, GREEN };static cv::Scalar colors[] = {cv::Scalar(0, 0, 255),cv::Scalar(0, 128, 255),cv::Scalar(0, 255, 255),cv::Scalar(0, 255, 0)};// Image preparation://cv::Mat gray(img.size(), CV_8UC1);cv::Mat small_img(cv::Size(cvRound(img.cols / scale),cvRound(img.rows / scale)), CV_8UC1);cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);cv::resize(gray, small_img, small_img.size(), 0.0, 0.0, cv::INTER_LINEAR);cv::equalizeHist(small_img, small_img);// Detect objects if any//vector<cv::Rect> objects;classifier->detectMultiScale(small_img,                  // input imageobjects,                    // place for the results1.1,                        // scale factor3,                          // minimum number of neighbors0,   // (old format cascades only)cv::Size(30, 30));          // throw away detections smaller than this// Loop through to found objects and draw boxes around them//int i = 0;for (vector<cv::Rect>::iterator r = objects.begin();r != objects.end(); r++, ++i) {cv::Rect r_ = (*r);r_.x *= scale;r_.y *= scale;r_.width *= scale;r_.height *= scale;cv::rectangle(img, r_, colors[i % 4]);}
}const char* params_1
= "{ help           | false | Sample app for loading googlenet model }"
"{ proto          | bvlc_googlenet.prototxt | model configuration }"
"{ model          | bvlc_googlenet.caffemodel | model weights }"
"{ label          | synset_words.txt | names of ILSVRC2012 classes }"
"{ image          | faces.png | path to image file }"
"{ opencl         | false | enable OpenCL }"
;
int main(int argc, char** argv) {CV_TRACE_FUNCTION();CommandLineParser parser(argc, argv, params_1);String file_path = parser.getPathToApplication() + "/";string image_file_name =   "girl2.jpg"; // parser.get<String>("image");// "oldboy.jpg";// string(argv[1]);cv::Mat img = cv::imread(image_file_name, 1);//String cascade_file_name = "haarcascade_frontalface_alt.xml"; //string(argv[2]);CascadeClassifier face_cascade;face_cascade.load("D:/opencv4lib/opencv/build/etc/haarcascades/haarcascade_frontalface_alt.xml");//cv::Ptr<cv::CascadeClassifier> cascade(new cv::CascadeClassifier(cascade_file_name));detectAndDraw(img, &face_cascade);cv::imshow("Result", img);cv::waitKey(0);return 0;
}

结果

其他

我们可以使用分类器训练其他,比如狗脸,猫脸,甚至一个车牌等等,具体训练方法请查阅其他文章

级联分类器-opencv使用相关推荐

  1. 基于OpenCV Haar实战级联分类器的使用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近年来,对象检测引起了广泛的关注.从智能手机到交通监控,目标检测已 ...

  2. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测

    级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器.级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练. Haar特征是由M.O ...

  3. OpenCV之objdetect 模块. 物体检测:级联分类器

    级联分类器 目标 在这节教程中您将学到: 使用 CascadeClassifier 类来检测视频流中的物体. 特别地, 我们将使用函数: load 来加载一个 .xml 分类器文件. 它既可以是Haa ...

  4. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

  5. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  6. OpenCV级联分类器Cascade Classifier

    OpenCV级联分类器Cascade Classifier 级联分类器Cascade Classifier 目标 理论 OpenCV中的Haar级联检测 结果 级联分类器Cascade Classif ...

  7. OpenCV实战5: LBP级联分类器实现人脸检测

    OpenCV中的HAAR与LBP数据 HAAR特征数据   参看 haarcascade_frontalface_alt.xml 各标签     LBP特征数据     参看 lbpcascade_f ...

  8. OpenCV中的级联分类器Cascade Classifier(面部识别)

    OpenCV中的级联分类器Cascade Classifier Goal In this tutorial you will learn how to: Use the CascadeClassifi ...

  9. Python+OpenCV:训练级联分类器(Cascade Classifier Training)

    Python+OpenCV:训练级联分类器(Cascade Classifier Training) Introduction Working with a boosted cascade of we ...

最新文章

  1. Java进阶之自动拆箱与自动装箱
  2. 《Ext JS 高级程序设计》的目录与样张
  3. 在linux中安装软件会出的问题,linux中安装程序出现的问题
  4. CNN中常用的卷积核:锐化卷积核模板
  5. 【求助】AIX5.3主机下 memcached的内存使用异常
  6. java环境变量怎么配置,详解系列文章
  7. Word+Excel 问题及解决
  8. 分布式理论-CAP定理
  9. 微软 Windows 10 S 之心不死!
  10. SubSonic 零代码的数据访问
  11. 面试:Android网络优化
  12. 混合储能系统能量管理simulink仿真模型。 蓄电池和超级电容构成的混合储能系统能量管理控制策略
  13. 用rollup打包vue组件库
  14. 脑地形图用matlab怎么画,利用MATLAB绘制GTOPO30的DEM地形图
  15. 教程7--Schemas和客户端库
  16. Django 链接sqlserver 简单教程
  17. jetson nano运行darknet_ros的环境配置
  18. 记一次遇到挖矿程序的经历
  19. jstree的简单使用例子
  20. centos 7.6 ——AWstate 日志分析工具——优化域名

热门文章

  1. syncthing下载_Syncthing中继服务器和发现服务器
  2. 页面自动刷新,页面自动跳转
  3. 1599元!荣耀Play6T Pro今日首销:史上最薄5G手机!
  4. 用友网络2021年净利润7.1亿元 同比减少28.2%
  5. Redmi K50系列三款新机全部入网:三款旗舰芯片都很能打
  6. NBA过上中国年 用五福福卡为球迷送祝福
  7. 花51万请明星和网红带货仅卖5000元,法院这样判了...
  8. 盒马把ID玩没了?更名“盒盒马马”后原昵称改不回来,网友笑翻了:官微急了...
  9. 特斯拉回应海南碰撞事故:地面湿滑 车主踩制动踏板幅度较轻
  10. 那些除夕夜还在上BOSS直聘的人