
工程实践
小雪糕
一只小雪糕
展开
-
基于双边滤波的人脸美化
人像美化类软件中通常会提供一个磨皮功能,可以使得皮肤变得柔和,去除痘痘和斑点。本文基于OpenCV中的双边滤波器实现了一个简单的人脸美化功能。 双边滤波,Bilateral filter,是一种保持边缘的降噪平滑滤波器。注意两点,第一是保持边缘,这样对于人脸而言,可以在平滑皮肤区域的同时不破坏五官的边缘结构。第二,降噪平滑,这样就可以抑制皮肤上的斑点和痘痘,使得皮肤变得柔和。Bi原创 2013-08-22 19:16:27 · 3635 阅读 · 0 评论 -
OpenCV detectMultiScale方法非线程安全
OpenCV号称线程安全,但是级联检测器CascadeClassifier中的detectMultiScale方法并不是线程安全的,但是在这个方法的内部用了TBB进行并行加速。 OpenCV官方论坛上有个帖子讨论这个问题:点击打开链接,帖子是两年前发的,还没有官方回应。 这个帖子给出了避免从文件系统中多次读取XML文件初始化CascadeClassifer对原创 2013-11-02 23:36:07 · 2468 阅读 · 1 评论 -
C++线性代数库Armadillo
做机器学习的同学一定对Matlab矩阵运算的简洁高效映像深刻,并且已经习以为常这种便捷。但实际工作中,我们经常需要将matlab代码移植成C/C++。 C++下的线性代数库诸如lapack, openblas之类接口生涩,例如矩阵乘法接口,eigen库又显得过于庞大。因此我一直在寻找一个接口简洁,同时对windows友好的轻量级C++线性代数库,直到我发现了这个: Am原创 2015-06-21 10:57:21 · 10462 阅读 · 1 评论 -
OpenCV操作PNG格式图像
PNG图像相比RGB图像最大的优势在于可以增加一个alpha通道表示透明度,老版本的OpenCV(2.3之前)无法直接读取alpha通道,需要修改源代码。 OpenCV2.3之后,可以用简单的CV_LOAD_IMAGE_UNCHANGED选项来加载图像。 IplImage* testPNG = cvLoadImage("test.png", CV_LOAD_IM原创 2013-11-30 21:59:14 · 9075 阅读 · 0 评论