|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 宇智波·佐助 于 2019-6-17 10:00 编辑
调用OpenCV计算器视觉库: OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
应用领域:
1、人机互动
2、物体识别
3、图像分割
4、人脸识别
5、动作识别
6、运动跟踪
7、机器人
8、运动分析
9、机器视觉
10、结构分析
11、汽车安全驾驶
OpenCV部分汉化文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html
OpenCV的接口不能被易语言调用,所以这里使用的是封装后的DLL
GIF加载需要一点时间....
面部位置识别:https://bbs.125.la/forum.php?mod=viewthread&tid=14391255
参考项目:https://github.com/amusi/opencv-facial-landmark-detection
- #include <opencv2/opencv.hpp>
- #include <opencv2/face.hpp>
- #include "drawLandmarks.hpp"
- using namespace std;
- using namespace cv;
- using namespace cv::face;
- int main(int argc,char** argv)
- {
- // 加载人脸检测器(Face Detector)
- // [1]Haar Face Detector
- //CascadeClassifier faceDetector("haarcascade_frontalface_alt2.xml");
- // [2]LBP Face Detector
- CascadeClassifier faceDetector("lbpcascade_frontalface.xml");
- // 创建Facemark类的对象
- Ptr<Facemark> facemark = FacemarkLBF::create();
- // 加载人脸检测器模型
- facemark->loadModel("lbfmodel.yaml");
- // 设置网络摄像头用来捕获视频
- VideoCapture cam(0);
-
- // 存储视频帧和灰度图的变量
- Mat frame, gray;
-
- // 读取帧
- while(cam.read(frame))
- {
-
- // 存储人脸矩形框的容器
- vector<Rect> faces;
- // 将视频帧转换至灰度图, 因为Face Detector的输入是灰度图
- cvtColor(frame, gray, COLOR_BGR2GRAY);
- // 人脸检测
- faceDetector.detectMultiScale(gray, faces);
-
- // 人脸关键点的容器
- vector< vector<Point2f> > landmarks;
-
- // 运行人脸关键点检测器(landmark detector)
- bool success = facemark->fit(frame,faces,landmarks);
-
- if(success)
- {
- // 如果成功, 在视频帧上绘制关键点
- for(int i = 0; i < landmarks.size(); i++)
- {
- // 自定义绘制人脸特征点函数, 可绘制人脸特征点形状/轮廓
- drawLandmarks(frame, landmarks[i]);
- // OpenCV自带绘制人脸关键点函数: drawFacemarks
- drawFacemarks(frame, landmarks[i], Scalar(0, 0, 255));
- }
-
- }
- // 显示结果
- imshow("Facial Landmark Detection", frame);
- // 如果按下ESC键, 则退出程序
- if (waitKey(1) == 27) break;
-
- }
- return 0;
- }
复制代码
下载源码(整体文件共61.3 MB):
链接: https://share.weiyun.com/506Ec1e
|
评分
-
查看全部评分
|