Dlib在VS2013上的配置方法
来源:互联网 发布:擎洲广达软件 编辑:程序博客网 时间:2024/04/29 05:46
首先公布原文地址:点击打开链接
作者的这边文章帮助很大,如果作者觉得转载有所不妥,请告知本人删除,谢谢!
Dlib官网地址:http://dlib.net/
Dlib移植到Android:http://blog.csdn.net/brightming/article/details/50595977
Dlib人脸对齐(特征点检测):http://blog.csdn.net/sunshine_in_moon/article/details/50150435
1、解压Dlib;
E:\Dlib\dlib-19.1
E:\Dlib\dlib-19.1-debug
2、CMake;
3、VS2013+Dlib;
#include "stdafx.h"#include <iostream>#include <dlib/image_processing/frontal_face_detector.h>#include <dlib/gui_widgets.h>#include <dlib/image_io.h>#include <iostream>#include <fstream>using namespace dlib;using namespace std;// ----------------------------------------------------------------------------------------int main(int argc, char** argv){try{frontal_face_detector detector = get_frontal_face_detector();//定义一个frontal_face_detctor类的实例detector,用get_frontal_face_detector函数初始化该实例image_window win;//一个显示窗口array2d<unsigned char> img;load_image(img, "33.jpg");// 加载一张图片,从argv[i](图片路劲)加载到变量imgpyramid_up(img);//对图像进行上采用,检测更小的人脸// Now tell the face detector to give us a list of bounding boxes// around all the faces it can find in the image.//开始检测,返回一系列的边界框std::vector<rectangle> dets = detector(img);//detector()函数检测人脸,返回一系列边界盒子cout << "Number of faces detected: " << dets.size() << endl;//dets.size 人脸数量// 在原图片上显示结果win.clear_overlay();win.set_image(img);win.add_overlay(dets, rgb_pixel(255, 0, 0));cout << "Hit enter to process the next image..." << endl;cin.get();}catch (exception& e){cout << "\nexception thrown!" << endl;cout << e.what() << endl;}}
#include "stdafx.h"#include <iostream>#include <dlib/image_processing/frontal_face_detector.h>#include <dlib/image_processing/render_face_detections.h> #include <dlib/image_processing.h>#include <dlib/gui_widgets.h>#include <dlib/image_io.h>#include <iostream>#include <fstream>using namespace dlib;using namespace std;// ----------------------------------------------------------------------------------------int main(int argc, char** argv){try{frontal_face_detector detector = get_frontal_face_detector();//定义一个frontal_face_detctor类的实例detector,用get_frontal_face_detector函数初始化该实例image_window win, win_faces;//一个显示窗口shape_predictor sp;//定义个shape_predictor类的实例 deserialize("shape_predictor_68_face_landmarks.dat") >> sp;// Loop over all the images provided on the command line.// 循环所有的图片array2d<unsigned char> img;load_image(img, "02.jpg");// 加载一张图片,从argv[i](图片路劲)加载到变量imgpyramid_up(img);//对图像进行上采用,检测更小的人脸// Now tell the face detector to give us a list of bounding boxes // around all the faces in the image. std::vector<rectangle> dets = detector(img);//检测人脸,获得边界框 cout << "Number of faces detected: " << dets.size() << endl;//检测到人脸的数量 // Now we will go ask the shape_predictor to tell us the pose of // each face we detected. //****调用shape_predictor类函数,返回每张人脸的姿势 std::vector<full_object_detection> shapes;//注意形状变量的类型,full_object_detection for (unsigned long j = 0; j < dets.size(); ++j){full_object_detection shape = sp(img, dets[j]);//预测姿势,注意输入是两个,一个是图片,另一个是从该图片检测到的边界框 cout << "number of parts: " << shape.num_parts() << endl;//cout << "pixel position of first part: " << shape.part(0) << endl;//获得第一个点的坐标,注意第一个点是从0开始的 //cout << "pixel position of second part: " << shape.part(1) << endl;//获得第二个点的坐标 /*自己改写,打印出全部68个点*/for (int i = 1; i < 69; i++){cout << "第 " << i << " 个点的坐标: " << shape.part(i - 1) << endl;}// You get the idea, you can get all the face part locations if // you want them. Here we just store them in shapes so we can // put them on the screen. shapes.push_back(shape);}// Now let's view our face poses on the screen. //**** 显示结果 win.clear_overlay();win.set_image(img);win.add_overlay(render_face_detections(shapes));// We can also extract copies of each face that are cropped, rotated upright, // and scaled to a standard size as shown here: //****我们也能提取每张剪裁后的人脸的副本,旋转和缩放到一个标准尺寸 dlib::array<array2d<rgb_pixel> > face_chips;extract_image_chips(img, get_face_chip_details(shapes), face_chips);win_faces.set_image(tile_images(face_chips));cout << "Hit enter to process the next image..." << endl;cin.get();}catch (exception& e){cout << "\nexception thrown!" << endl;cout << e.what() << endl;}}
#include "stdafx.h"#include <iostream>#include <opencv2/opencv.hpp>#include <dlib/image_processing/frontal_face_detector.h>#include <dlib/image_processing/render_face_detections.h> #include <dlib/image_processing.h>#include <dlib/gui_widgets.h>#include <dlib/image_io.h>#include <iostream>#include <fstream>using namespace dlib;using namespace std;using namespace cv;// ----------------------------------------------------------------------------------------int main(int argc, char** argv){char img_file[] = "02.jpg";char landmark_file[] = "shape_predictor_68_face_landmarks.dat";// Mat img = imread(img_file);// frontal_face_detector detector = get_frontal_face_detector();shape_predictor sp;deserialize(landmark_file) >> sp;array2d<rgb_pixel> arrImg;load_image(arrImg, img_file);std::vector<dlib::rectangle> dets = detector(arrImg);for (unsigned long j = 0; j < dets.size(); ++j){full_object_detection shape = sp(arrImg, dets[j]);for (unsigned long i = 0; i<shape.num_parts(); i++){point pt = shape.part(i);int x = pt.x();int y = pt.y();line(img, Point(pt.x(), pt.y()), Point(pt.x(), pt.y()), Scalar(0, 0, 255), 2);}}// imshow("img", img);waitKey();return 0;}
#include "stdafx.h"#include <iostream>#include <opencv2/opencv.hpp>#include <dlib/image_processing/frontal_face_detector.h>#include <dlib/image_processing/render_face_detections.h> #include <dlib/image_processing.h>#include <dlib/gui_widgets.h>#include <dlib/image_io.h>#include <dlib/opencv.h>#include <iostream>#include <fstream>using namespace dlib;using namespace std;using namespace cv;// ----------------------------------------------------------------------------------------int main(int argc, char** argv){try{char img_file[] = "02.jpg";char landmark_file[] = "shape_predictor_68_face_landmarks.dat";// //Mat img = imread(img_file);namedWindow("img", 1);Mat img;VideoCapture cap("Duan2.mp4");int totalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);cap >> img;int w = img.cols;int h = img.rows;cout << w << ", " << h << endl;// frontal_face_detector detector = get_frontal_face_detector();shape_predictor sp;deserialize(landmark_file) >> sp;for (int nFrmNum = 0; nFrmNum < totalFrameNumber; nFrmNum++) {// get frame from the videocap >> img;cout << nFrmNum << " =======================" << endl;if (!img.empty()){cv_image<bgr_pixel> cimg(img);// Detect faces std::vector<dlib::rectangle> dets = detector(cimg);for (unsigned long j = 0; j < dets.size(); ++j){full_object_detection shape = sp(cimg, dets[j]);for (unsigned long i = 0; i < shape.num_parts(); i++){point pt = shape.part(i);int x = pt.x();int y = pt.y();line(img, Point(pt.x(), pt.y()), Point(pt.x(), pt.y()), Scalar(0, 0, 255), 2);char ptr[20];sprintf(ptr, "%d", i);putText(img, ptr, Point(pt.x(), pt.y()), 1, 1.0, Scalar(0, 0, 255));}}imshow("img", img);waitKey(1);}}}catch (exception& e){cout << e.what() << endl;}waitKey();return 0;}
阅读全文
0 0
- Dlib在VS2013上的配置方法
- 【%Dlib%】Dlib在VS2013上的配置方法
- win7+vs2013+dlib配置
- vs2013配置dlib库
- opencv2.4.9 在vs2013 上的配置方法
- Dlib debug版 或 dlib release版 在VS2013中的配置安装
- QT在VS2013上的配置
- dlib在window的安装方法
- 【openCV】有关在VS2013上进行openCV配置的注意事项
- [opencv]opencv2.4.10在vs2013下的配置方法
- 在VS2013上配置parser generator
- 机器学习库Dlib在VS2015上的安装教程
- Win7 64位系统上OpenCV的安装与在VS2013上的配置&问题解决
- win10下vs2013+DLib机器学习库安装及配置
- Dlib简介及在windows7 vs2013编译过程
- Dlib库的安装配置
- jsoncpp在vs2013上的编译
- webRTC在Win7 VS2013上的编译
- struts2之拦截器(interceptor)
- C++中,get和getline函数的区别
- Spring源码(五)-bean的加载(下)
- 扑克牌顺子
- 微信支付开发文件WxPay.Config.php配置详解-公众号支付开发-视频教程4
- Dlib在VS2013上的配置方法
- 如何设计短信验证码防刷机制
- souce insight4.0 macro脚本不兼容问题
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎抓取并测试搜索结果
- phalapi框架接口实现视频上传
- 京东商品详情视觉差效果
- Electron部署和打包
- 直播基础
- Spring源码(六)-Spring循环依赖的解决方案