07 实时读取双目视频,并对双目视频进行人脸识别
2018-01-30 14:31
337 查看
//程序功能:实时读取双目视频,并对双目视频进行人脸识别。 //功能参数:双目分辨率:1280*480,显示双目源视频,显示对双目进行人脸检测的效果视频 //官方网址:莱娜网 www.FpgaLena.com //程序版本:2016-11-V1.0 //备注:程序第64行,需要根据电脑连接camera的情况进行参数设置。 #include <iostream> #include <string> #include <sstream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/videoio.hpp> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; const char* keys = { "{help h usage ? | | print this message}" "{@video | | Video file, if not defined try to use webcamera}" }; int main(int argc, const char** argv) //程序主函数 { //string xmlPath = "E:\\ZJ902\\Program Files\\OPENCV_3.1\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml"; string xmlPath = "F:\\opencv\\opencv\\build\\etc\\haarcascades\\cascade_org.xml"; CascadeClassifier ccf; //创建分类器对象 if (!ccf.load(xmlPath)) //加载训练文件 { cout << "不能加载指定的xml文件" << endl; return 0; } vector<Rect> faces; //创建一个容器保存检测出来的脸 Mat facegray; CommandLineParser parser(argc, argv, keys); parser.about("Video Capture"); if (parser.has("help")) //帮助信息 { parser.printMessage(); return 0; } String videoFile = parser.get<String>(0); if (!parser.check()) { parser.printErrors(); return 0; } VideoCapture cap; if (videoFile != "") { cap.open(videoFile); } else { //--此处需要根据电脑实际连接成像设备的情况,由客户自行进行参数调整------------------------------------ cap.open(0); //打开相机,电脑自带摄像头一般编号为0,外接摄像头编号为1(但不绝对,也可能是反过来的) //-------------------------------------------------------------------------------------- cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280); //设置捕获视频的宽度 cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480); //设置捕获视频的高度 } if (!cap.isOpened()) //判断是否成功打开相机 { return -1; } Mat frame; cap >> frame; //从相机捕获一帧图像 Mat grayImage; //用于存放灰度数据 while (1) { cap >> frame; //从相机捕获一帧图像 cvtColor(frame, facegray, CV_BGR2GRAY); //转换成灰度图,因为harr特征从灰度图中提取 equalizeHist(facegray, facegray); //直方图均衡 ccf.detectMultiScale(facegray, faces, 1.1, 3, 0, Size(10, 10), Size(500, 500)); //检测人脸 for (vector<Rect>::const_iterator iter = faces.begin(); iter != faces.end(); iter++) { //(iter)[1] = (iter)[1] + (iter)[1]; rectangle(frame, *iter, Scalar(0, 0, 255), 2, 8); //将图像中的人脸用矩形框起来 } namedWindow("人脸识别演示--莱娜网--机器视觉技术专家", 1); //实时显示双目视频 imshow("人脸识别演示--莱娜网--机器视觉技术专家", frame); if (waitKey(30) >= 0) break; } cap.release(); //释放对相机的控制 return 0; }
相关文章推荐
- opencv从摄像头读取视频并实时进行人脸检测代码
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我”
- OpenCV学习记录(二):自己训练haar特征的adaboost分类器进行人脸识别 标签: 脸部识别opencv 2017-07-03 21:38 26人阅读
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 人脸检测及识别python实现系列(1)——配置、获取实时视频流
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 实时视频人脸识别尝试(使用ShiqiYu老师的人脸识别库)
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- TensorFlow实现人脸识别(5)-------利用训练好的模型实时进行人脸检测
- opencv读取视频数据输出人脸识别结果
- 使用Caffe对摄像机视频流中的目标进行识别
- 使用 Kotlin 读取本地视频并使用Vitamio框架编写万能播放器进行播放(一)
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式
- 苹果解密:如何在手机上用深度神经网络进行人脸识别
- Android 使用Face++进行人脸识别
- 利用OpenCV进行人脸识别
- 在EasyDarwin进行实时视频转发的两种模式
- 使用OpenFace进行人脸识别(1)