OpenCV使用级联分类器找出视频文件中的人脸
一、概述
案例:使用OpenCV自带的级联分类器找出视频中的人脸
操作步骤:
1.实例化VideoCapture
2.使用其open方法打开文件
3.检测是否打开了文件
4.创建CascadeClassifier实例
5.加载加载特征数据
6.循环读取视频文件中的每一帧
7.将读取出来的视频帧转为灰度图和直方图均衡化
8.使用detectMutilScale在不同的尺度空间找出人脸,并存入vector<Rect>中
9.使用rectangle将找出的人脸绘制并显示出来
10.循环从第6步开始循环,直到视频文件读取完成。
ps:两个重要的内容
1.使用VideoCapture读取视频文件的每一帧
2.利用CascadeClassifier识别人脸
二、代码示例
String filePath = "/usr/local/share/opencv4/haarcascades/haarcascade_frontalface_alt.xml"; CascadeClassifier face_classifier; if(!face_classifier.load(filePath)){ qDebug()<<"Haar特征数据文件不能为空"; return; } VideoCapture videoCapture; videoCapture.open("/Users/yangwei/Downloads/1649470407696618.mp4"); if(!videoCapture.isOpened()){ qDebug()<<"打开了摄像头"; return; } Mat frame,gray; while(videoCapture.read(frame)){ qDebug()<<"读取视频帧"; cvtColor(frame,gray,COLOR_BGR2GRAY); equalizeHist(gray,gray); vector<Rect> faces; face_classifier.detectMultiScale(gray,faces,1.3,15,0,Size(30,30)); for(size_t i = 0;i<faces.size();i++){ rectangle(frame,faces[i],Scalar(0,0,255),3,LINE_8); } imshow("src",frame); waitKey(1000 / videoCapture.get(CAP_PROP_FPS)-10); } videoCapture.release();
三、图片演示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2018-04-09 android 图片上传图片 报Socket: Broken pipe