欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > OpenCV级联分类器

OpenCV级联分类器

2025/5/21 17:35:07 来源:https://blog.csdn.net/2301_80657297/article/details/148034581  浏览:    关键词:OpenCV级联分类器

概念

        OpenCV 级联分类器是一种基于 Haar 特征、AdaBoost 算法和级联结构的目标检测方法,通过多阶段筛选快速排除非目标区域,实现高效实时检测(如人脸、行人等)。

加载级联分类器

    // 加载级联分类器CascadeClassifier cascade;// 加载级联分类器文件cascade.load("xml/cars.xml");

关键代码

void detec_car(Mat &frame,CascadeClassifier cascade,double scale)
{// 灰度处理Mat gray_frame;cvtColor(frame,gray_frame,CV_BGR2GRAY);// 压缩灰度图到原来一半Mat smalling(cvRound(frame.rows/scale),cvRound(frame.cols/scale),CV_8UC1);resize(gray_frame,smalling,smalling.size(),0,0,INTER_LINEAR);// 直方图均值化:利用直方图均衡函数让图像呈现出黑白分明,凸显出主要检测的目标equalizeHist(smalling,smalling);// 使用级联分类器模型识别车辆vector<Rect> cars;cascade.detectMultiScale(smalling,cars,1.1,2,0|CV_HAAR_SCALE_IMAGE,Size(30,30));// 绘制矩形框vector<Rect>::const_iterator itr;for(itr=cars.begin();itr!=cars.end();itr++){rectangle(frame,cvPoint(cvRound(itr->x*scale),cvRound(itr->y*scale)),cvPoint(cvRound((itr->x+itr->width)*scale),cvRound((itr->y+itr->height)*scale)),Scalar(0,255,0),2,3);}imshow("res",frame);
}

操作步骤(训练过程)

1、正样本数据采集(需要检测的物体图片)

2、负样本数据采集(非检测物的图片)

3、调用opencv程序opencv_createsamples.exe程序实现样本数据采集。

4、调用opencv程序opencv_traincascade.exe样本训练程序进行训练

5、生成级联分类器文件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词