深度学习系列之(dlib+opencv)代码收藏
来源:互联网 发布:用js怎么写九九乘法表 编辑:程序博客网 时间:2024/05/19 20:48
1. dlib::array2d 与 cv::Mat 互转
dlib::array2d is an image already, you can use it for any dlib's image functions//load image:dlib::array2d<dlib::rgb_pixel> img_rgb;dlib::load_image(img_rgb, "test_image.jpg");//convert to greyscale:dlib::array2d<unsigned char> img_gray;dlib::assign_image(img_gray, img_rgb);//converto to OpenCV Image (cv::Mat):#include <dlib/op//cv.h>#include <opencv2/opencv.hpp>cv::Mat img = dlib::toMat(img_gray);//get image from OpenCV:#include <dlib/opencv.h>#include <opencv2/opencv.hpp>cv::Mat img = cv::imread("test_image.jpg")dlib::cv_image<rgb_pixel> dlib_img(img); // only stores pointer, no deep copy
2)OpenCV Mat转dlib array2d
#include "opencv2/core/core_c.h" // shame, but needed for using dlib #include <dlib/image_processing.h> #include <dlib/opencv/cv_image.h> dlib::shape_predictor sp; dlib::deserialize(path_to_landmark_model) >> sp; cv::Rect r; cv::Mat I; dlib::rectangle rec(r.x, r.y, r.x+r.width, r.y+r.height); dlib::full_object_detection shape = sp(dlib::cv_image<uchar>(I), rec);
2.截取原图的指定位置大小的区域
#用矩阵截取原图cv::mat roi_img = src_img(Range(0,100),Range(50,200));或者:cv::mat roi_img = src_img(mtrx.rows,mtrx.cols);#用矩形截取原图大小Rect rect(10, 20, 100, 50);Mat image_roi = image(rect)或者:cv::Mat image_roi = src_img(cv::Rect(rec.left(), rec.top(), rec.width(), rec.height()));//前两个参数为左上角坐标(x,y),后两个为矩形的宽和高;
3.Main函数参数argc,argv如何传入
1)http://blog.csdn.net/guo_xiaoxi/article/details/57074891(vs工程中添加配置)
2)如下(dos命令端):
int main(int argc, char** argv)int main(int argc, char* argv[])
这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:
hello.exe Shiqi Yu
那么,argc的值是 3,argv[0]是”hello.exe”(本身的地址),argv[1]是”Shiqi”,argv[2]是”Yu”。
4.vs2013运行dlib小程序报错:无法解析的外部命令
错误 2 error LNK2019: 无法解析的外部符号 "public: __cdecl dlib::entropy_decoder_kernel_2::entropy_decoder_kernel_2(void)" (??0entropy_decoder_kernel_2@dlib@@QEAA@XZ),该符号在函数 "void __cdecl dlib::load_dng<class dlib::array2d<unsigned char,class dlib::memory_manager_stateless_kernel_1<char> > >(class dlib::array2d<unsigned char,class dlib::memory_manager_stateless_kernel_1<char> > &,class std::basic_istream<char,struct std::char_traits<char> > &)" (??$load_dng@V?$array2d@EV?$memory_manager_stateless_kernel_1@D@dlib@@@dlib@@@dlib@@YAXAEAV?$array2d@EV?$memory_manager_stateless_kernel_1@D@dlib@@@0@AEAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z) 中被引用 E:\program-file\vs_project\face_pro\dlib_test\dlib_test\fece_detection2.obj dlib_test
每次看到这个错误脑袋就蒙圈,想不起来上次是怎么解决的了,记录一下:
1)检查dlib依赖项是否添加
2)检查自己的dlib项目类型,win32还是x64,(我的是win32,在x64下就会报上面的错)
3)win32和x64下面的依赖项是要分别添加的(才知道)
5.dlib读取文件时,不要通过重命名修改文件类型,往往导致unknown image foemat,要另存为的方式修改文件类型;
6.实例代码收藏
1)视频处理的人脸检测
http://blog.csdn.net/xiamentingtao/article/details/50968514
http://blog.csdn.net/sunmc1204953974/article/details/49976045
2)视频之关键点提取
http://blog.csdn.net/zmdsjtu/article/details/53454071
http://blog.csdn.net/zmdsjtu/article/details/53667929
7.vs2013 dlib opencv应用无法正常启动0xc00007b
重新配置了opencv:路径加入环境变量(之前一直偷懒没加,这次就报了这个错),检查项目中的opencv配置。
最终:(1)在dlib实例基础上实现了人脸检测和人脸框图像的本地保存;
(2)批量读取文件并保存人脸关键点和标签至txt文件。
代码上传至:http://download.csdn.net/download/u012617944/10051117
- 深度学习系列之(dlib+opencv)代码收藏
- 【深度学习】基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)
- Dlib+OpenCV深度学习人脸识别
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【一】如何在Visual Studio中像使用OpenCV一样使用Caffe
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【二】人脸检测与预处理接口的设计
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【五】设计人脸识别的注册类
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类
- C++实现基于深度学习的人脸识别系统(Dlib+Caffe+Opencv)
- 机器学习实践系列之1 - dlib
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【三】使用Caffe的MemoryData层与VGG网络模型提取Mat的特征
- Dlib学习笔记:dlib array2d与 OpenCV Mat互转
- caffe学习系列:python代码收藏
- 深度学习系列之ANN
- OpenCV实践之路——用OpenCV和Dlib进行人脸颜值预测(Python)
- OpenCV实践之路——用OpenCV和Dlib进行人脸颜值预测(Python)
- 《零基础入门深度学习》系列文章(教程+代码)
- 一个前端的自我修养
- 手把手教你完成App端-支付宝支付Android
- 这10个思路,能帮你设计出简单易用的网页
- html input的type设置为number后可以输入e
- json数据解析
- 深度学习系列之(dlib+opencv)代码收藏
- 10月20日云栖精选夜读:揭秘云栖大会VR直播云服务解决方案的技术亮点和核心能力
- 菜单权限设计实现
- Linux的琐碎事儿~~
- [LeetCode]58. Length of Last Word
- erlang开发工具之intellij idea基本使用
- Java中文转GBK码
- <背包DP>codevs 1684 垃圾陷阱
- Yaml简易学习