Loading...
首页问答    

海思移植opencv+人脸检测+速度优化

9crk
9crk  发布于 2014-12-25 19:01:54 41396

[i=s] 本帖最后由 9crk 于 2014-12-25 22:32 编辑 [/i]

[b]1.确保ubuntu能上网[/b]

[b]2.安装cmake[/b] 代码: 全选 sudo apt-get install cmake-gui

[b]3.下载opencv2.4.9 Linux版源码,不要用最新的3.0.0[/b] http://opencv.org/downloads.html

[b]4.解压opencv源码[/b] 代码: 全选 unzip opencv-2.4.9.zip

[b]5.创建一个build目录用于编译和一个output目录[/b] 用于存放编译完成后的海思平台的opencv: 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ ls 3rdparty LICENSE apps data include modules samples CMakeLists.txt README.md cmake doc index.rst platforms xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ cd ..
xlab@xlab-dev:~/zhouhua/opencv$ ls build opencv-2.4.9 opencv-2.4.9.zip output xlab@xlab-dev:~/zhouhua/opencv$ mkdir build xlab@xlab-dev:~/zhouhua/opencv$ mkdir output

[b]6.执行cmake-gui[/b] 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ cmake-gui

点击Browse Source选择~/zhouhua/opencv/opencv-2.4.9 点击Browse Build选择~/zhouhua/opencv/build 然后点击Configure

此时出现的对话框选择最后一项:Specify options for cross-compiling 下一步 Operating System填写 arm-hisiv100nptl-linux C填写arm-hisiv100nptl-linux-gcc C++填写arm-hisiv100nptl-linux-g++

下一步,然后等待Configuration done 然后在出现的列表中修改CMAKE_INSTALL_PREFIX为~/zhouhua/opencv/output 然后点击Generate 等待Generation done 即可关闭cmake软件。

[b]7.进入build目录执行make[/b] 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/build$ make

提示出错: 代码: 全选 ../../lib/libopencv_core.so: undefined reference to pthread_once' ../../lib/libopencv_core.so: undefined reference topthread_spin_lock' ../../lib/libopencv_core.so: undefined reference to pthread_spin_unlock' ../../lib/libopencv_core.so: undefined reference topthread_spin_init' ../../lib/libopencv_core.so: undefined reference to pthread_spin_trylock' ../../lib/libopencv_core.so: undefined reference topthread_spin_destroy'

修改CMakeCache.txt大约200行处 //Flags used by the linker. CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt 继续make 可能出现如下错误 代码: 全选 CMake Error at /home/xlab/zhouhua/opencv/opencv-2.4.9/cmake/cl2cpp.cmake:50 (string): string does not recognize sub-command MD5

make[2]: [modules/ocl/opencl_kernels.cpp] Error 1 make[1]: [modules/ocl/CMakeFiles/opencv_ocl.dir/all] Error 2 make: *** [all] Error 2

删除/home/xlab/zhouhua/opencv/opencv-2.4.9/cmake/cl2cpp.cmake的第50行的内容即可。 继续make 完成后执行make install 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/output$ ls LICENSE bin include lib share

[b]8.得到了include和lib目录就可以编写程序了,来试试最常用的人脸检测吧[/b] 编写如下代码 代码: 全选 /*Author:9crk 2014-12-24***/

include "cv.h"

include "highgui.h"

include "stdio.h"

/**for time mesurement*****/

include <sys/time.h>

struct timeval tpstart,tpend; unsigned long timeuses; void timeRec() { gettimeofday(&tpstart,0); } int timeRep() { gettimeofday(&tpend,0); timeuses=(tpend.tv_sec-tpstart.tv_sec)*1000000+tpend.tv_usec-tpstart.tv_usec; printf("use time: %uus\n",timeuses); return timeuses; } /****end**/

int main(int argc, char argv[]) { IplImage img = NULL; IplImage cutImg = NULL; CvMemStorage storage = cvCreateMemStorage(0); CvHaarClassifierCascade cascade = (CvHaarClassifierCascade)cvLoad("./haarcascade_frontalface_alt2.xml", 0, 0, 0); CvSeq* faces;

img = cvLoadImage(argv[1], 0);

timeRec(); faces = cvHaarDetectObjects(img, cascade, storage, 1.2, 2, 0, cvSize(25,25) ); timeRep(); if (faces->total == 0){ printf("no face!\n"); } cvSetImageROI(img, ((CvRect)cvGetSeqElem( faces, 0))); cvSaveImage("face.bmp", img);
cvResetImageROI(img); printf("face detected! in face.bmp!\n"); }

为了方便,直接将库和头文件拷贝到编译器的目录下去 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/mytest$ sudo cp ../output/lib/ /opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/lib/ xlab@xlab-dev:~/zhouhua/opencv/mytest$sudo cp ../output/include/ /opt/hisi-linux-nptl/arm-hisiv100-linux/arm-hisiv100-linux-uclibcgnueabi/include/ -r

然后编译:(由于版本比较高,用了opencv2的头文件,因此需要额外增加一个-I参数指定头文件目录) 代码: 全选 arm-hisiv100nptl-linux-g++ face.cpp -I/home/xlab/zhouhua/opencv/output/include/opencv -lopencv_highgui -lopencv_core -lopencv_imgproc -lpthread -lrt -lopencv_objdetect -o face

会提示一些warning,不用管。 编译成功,然后拷贝人脸分类器文件过来。 代码: 全选 xlab@xlab-dev:~/zhouhua/opencv/mytest$ cp ../output/share/OpenCV/haarcascades/haarcascade_frontalface_alt2.xml ./

再找个图片过来,我这里就用lena.jpg了。 然后nfs挂到开发板 到开发板端做软连接库到/lib目录下 代码: 全选 ln -s /mnt/nfs/zhouhua/opencv/output/lib/libopencv_imgproc.so /lib/libopencv_imgproc.so ln -s /mnt/nfs/zhouhua/opencv/output/lib/libopencv_objdetect.so /lib/libopencv_objdetect.so ln -s /mnt/nfs/zhouhua/opencv/output/lib/libopencv_highgui.so /lib/libopencv_highgui.so ln -s /mnt/nfs/zhouhua/opencv/output/lib/libopencv_core.so /lib/libopencv_core.so

然后到face所在的nfs目录去执行即可:

./face lena.jpg

use time: 31532724us face detected! in face.bmp! 由于参数没有优化,用了31秒才找到lena的脸。。 [attach]2049[/attach]

[b]9.速度优化[/b] 先修改一下图片长、宽为之前的1/4试试

./face lena.jpg

smallImg w=128 h=128 use time: 1179871us face detected! in face.bmp! 这次用了1.1秒

再修改检测参数 faces = cvHaarDetectObjects(smallImg, cascade, storage, 1.5, 4, 0, cvSize(25,25) );

./face lena.jpg

smallImg w=128 h=128 use time: 578169us face detected! in face.bmp! 这次用了578ms,检测出来的人脸大小是44x44的。

一般的应用应该够了,注意,此测试是在nfs下,如果拷贝到板子,速度会更快,当然,修改参数后的漏检率还需要测试。

下面贴出最后的代码(ps:之前的代码没有释放内存)

/*Author:9crk 2014-12-24***/

include "cv.h"

include "highgui.h"

include "stdio.h"

/**for time mesurement*****/

include <sys/time.h>

struct timeval tpstart,tpend; unsigned long timeuses; void timeRec() { gettimeofday(&tpstart,0); } int timeRep() { gettimeofday(&tpend,0); timeuses=(tpend.tv_sec-tpstart.tv_sec)*1000000+tpend.tv_usec-tpstart.tv_usec; printf("use time: %uus\n",timeuses); return timeuses; } /****end**/ int main(int argc, char argv[]) { IplImage img = NULL; IplImage* cutImg = NULL;

CvMemStorage storage = cvCreateMemStorage(0); CvHaarClassifierCascade cascade = (CvHaarClassifierCascade)cvLoad("./haarcascade_frontalface_alt2.xml", 0, 0, 0); CvSeq faces; //加载图像 img = cvLoadImage(argv[1], 0); //缩放到1/4大小 IplImage *smallImg = cvCreateImage(cvSize(img->width/4, img->height/4), 8, img->nChannels); printf("smallImg w=%d h=%d\n", smallImg->width, smallImg->height); cvResize(img, smallImg); //检测并计时 timeRec(); faces = cvHaarDetectObjects(smallImg, cascade, storage, 1.5, 4, 0, cvSize(25,25) ); timeRep();

if (faces->total == 0){
    printf("no face!\n");
}
//切取出头像
cvSetImageROI(smallImg, *((CvRect*)cvGetSeqElem( faces, 0))); 
cvSaveImage("face.bmp", smallImg);    
cvResetImageROI(smallImg);
//释放内存
cvReleaseImage(&img);
cvReleaseImage(&smallImg);
printf("face detected! in face.bmp!\n");

}

david  发布于 2014-12-25 19:19:36
回头参考移植到全志平台上去。
0
一个爱徒步的~IT民工
fox-cool  发布于 2014-12-29 21:46:09
本帖最后由 fox-cool 于 2014-12-29 21:47 编辑

不知道这个做到 人脸识别还有多少路? 作疑犯特征对比。
0
drafour  发布于 2015-01-16 14:29:11
还是找不到pthread_spin_init啊,看pthread.h里面pthread_spin_init相关函数都被注释掉了啊
0
9crk  发布于 2015-01-16 16:49:22
[quote][url=forum.php?mod=redirect&goto=findpost&pid=11398&ptid=4858]drafour 发表于 2015-1-16 14:29[/url]
还是找不到pthread_spin_init啊,看pthread.h里面pthread_spin_init相关函数都被注释掉了啊[/quote]

lpthread是海思编译器自带的库,这个不需要头文件的,只需要库就行了,所以不用看头文件。是不是你没有加上 -lpthread ?
0
drafour  发布于 2015-01-18 12:33:18
[quote][url=forum.php?mod=redirect&goto=findpost&pid=11404&ptid=4858]9crk 发表于 2015-1-16 16:49[/url]
lpthread是海思编译器自带的库,这个不需要头文件的,只需要库就行了,所以不用看头文件。是不是你没有加 ...[/quote]

加了啊,按照你上面说的加了。我使用的是3515的sdk。是ulibc的。估计你的海思sdk交叉编译器是glibc的吧
0
9crk  发布于 2015-01-18 21:33:05
[quote][url=forum.php?mod=redirect&goto=findpost&pid=11430&ptid=4858]drafour 发表于 2015-1-18 12:33[/url]
加了啊,按照你上面说的加了。我使用的是3515的sdk。是ulibc的。估计你的海思sdk交叉编译器是glibc的吧[/quote]

我用的也是uclibc
注意,编译命令是g++,一般地,如果明明加了那个库,也存在那个库(可以用arm-linux-objdump -t查看那个库中是否有此函数),就是c++和c不兼容的问题。
0
zhuifengsn  发布于 2015-01-29 21:21:59
本帖最后由 zhuifengsn 于 2015-1-29 21:32 编辑

我按你这个教程来做,在make阶段出现了很多错误。楼主编译过程真的有这么顺利?
我测试过centos的虚拟机和ubuntu系统,使用的是hisiV100,GCC版本是3.4.3
这是opencv2.4.9的错误
[img]http://ww2.sinaimg.cn/large/005X3q9sjw1eoqpfysqkzj30ry0ifk3j.jpg[/img]
这是2.3.1的错误,提示wchar.h找不到
[img=1021,545]http://ww1.sinaimg.cn/large/005X4kHAjw1eoqpkm54bvj30sd0f5qeg.jpg[/img]
这是编译2.2的错误,还是提示wchar找不到。我尝试过直接复制Linux /usr/include下的wchar.h到编译器的include目录下,还是会出错


最后,我用了2.0版本,没有用到cmake,最后在ubuntu下编译成功了。我在想,是不是因为海思的SDK用的GCC版本太旧了?怎么我一个版本都没成功编译?
0
zhuifengsn  发布于 2015-01-29 21:33:27
[quote][url=forum.php?mod=redirect&goto=findpost&pid=11439&ptid=4858]9crk 发表于 2015-1-18 21:33[/url]
我用的也是uclibc
注意,编译命令是g++,一般地,如果明明加了那个库,也存在那个库(可以用arm-linux-o ...[/quote]

大神能否私信一个QQ号?最近被安装opencv虐哭了,求解救
0
9crk  发布于 2015-01-29 23:53:28
[quote][url=forum.php?mod=redirect&goto=findpost&pid=12046&ptid=4858]zhuifengsn 发表于 2015-1-29 21:33[/url]
大神能否私信一个QQ号?最近被安装opencv虐哭了,求解救[/quote]

把每一步,详细截图吧。每个版本都是可以编译成功的。错误信息用文字贴出来,方便复制。
0
drafour  发布于 2015-01-30 09:30:24
我用2.0移植海思3515成功了,但参数像你那么配置,在海思3515上单独运行图片人脸接侧,检测一张得要7,8秒。参数再调小一点就得20多秒了。没你说的那么快啊。我再研究一下移植一下2.4.9的,
0
drafour  发布于 2015-01-30 09:46:43
[quote][url=forum.php?mod=redirect&goto=findpost&pid=11439&ptid=4858]9crk 发表于 2015-1-18 21:33[/url]
我用的也是uclibc
注意,编译命令是g++,一般地,如果明明加了那个库,也存在那个库(可以用arm-linux-o ...[/quote]

2.4.9还是编不过去。3515的编译器库里面根本就没有这几个函数
0
9crk  发布于 2015-01-30 13:03:10
[quote][url=forum.php?mod=redirect&goto=findpost&pid=12057&ptid=4858]drafour 发表于 2015-1-30 09:46[/url]
2.4.9还是编不过去。3515的编译器库里面根本就没有这几个函数[/quote]

这几个函数应该是写多线程函数很常用的吧。。那你用3515编译器写多线程的时候,怎么链接的lpthread ?
0
9crk  发布于 2015-01-30 13:06:53
[quote][url=forum.php?mod=redirect&goto=findpost&pid=12056&ptid=4858]drafour 发表于 2015-1-30 09:30[/url]
我用2.0移植海思3515成功了,但参数像你那么配置,在海思3515上单独运行图片人脸接侧,检测一张得要7,8秒 ...[/quote]

这个跟版本关系应该不大。我的代码只是做一个优化的思路,通过缩小图片、增加步进检测倍数等方法。具体的时间不好说,我用的是3518。
0
drafour  发布于 2015-01-30 13:48:44
[quote][url=forum.php?mod=redirect&goto=findpost&pid=12071&ptid=4858]9crk 发表于 2015-1-30 13:03[/url]
这几个函数应该是写多线程函数很常用的吧。。那你用3515编译器写多线程的时候,怎么链接的lpthread ?[/quote]

makefile里连接lpthread的。我的程序用不上pthread_spin一系列函数。另外我把2.4.9里面pthread_spin相关函数注释掉,还有其他很多非lpthread的编译错误。可能是arm-hismall-linux-g++和你用的arm-hisiv100nptl-linux-g++差别大吧
0
drafour  发布于 2015-01-30 13:50:48
算了,暂不研究2.4.9的移植了,时间不够。我先优化优化2.0.0.多谢
0
xy-mcu  发布于 2015-03-04 18:49:36
不错,作为opencv 编译的一个参考。
0
youxia0420  发布于 2015-06-25 11:24:14
请教下要如何生成opencv的静态库?3518内存太小,把动态库加进来的话,空间肯定不够用,所以想利用opencv的静态库直接生成可执行文件的应用。
0
tornado303  发布于 2015-10-08 18:05:01
有人移植opencv到海思3516A上吗, 是不是所有的函数都可以正常使用?

另外执行命令build  opencv-2.4.9  opencv-2.4.9.zip  output 时,提示 no command ‘build’ found,you may mean xbuild,pbuild之类的,怎么解决啊
0
sxsong  发布于 2015-10-09 13:26:37
好东西,楼楼用的是海思哪个版本的sdk啊
0
cdxionghang  发布于 2015-11-18 15:07:07
[quote][url=forum.php?mod=redirect&goto=findpost&pid=17475&ptid=4858]youxia0420 发表于 2015-6-25 11:24[/url]
请教下要如何生成opencv的静态库?3518内存太小,把动态库加进来的话,空间肯定不够用,所以想利用opencv的 ...[/quote]

修改build中的CMakeCache.txt中的
BUILD_SHARED_LIBS:BOOL=ON 改为OFF.重新编译之后就会有相应的.a了
0
gaosha  发布于 2015-11-18 17:56:02
人脸识别不错哦,赞一个
0
liujiaqi13  发布于 2015-11-23 14:03:10
很腻害的样子,mark
0
billwen  发布于 2015-12-03 10:55:11
这个估计只有在hi3536上可以
0
chenlei111222  发布于 2015-12-22 10:08:30
按照你给的方法交叉编译opencv2.4.9,得到头文件和库后,编译出的可执行程序放到板子上运行后无反应,cpu没有明显变化,海思3518E内存64M,flash 16M,arm-hisiv100nptl-linux-gcc,arm-hisiv100nptl-linux-g++,编译不调用opencv  api的程序,链接库后运行依然无反应,请问下什么原因?
0
ethancwchen  发布于 2016-02-29 11:53:57
智能時化來臨了, 大家可以說說用那些項目嗎 ???.
0
zyqhziee  发布于 2016-03-07 08:36:06
海思的IVE对一些常用算子进行加速,能否通过封装调用IVE库对一些算法进行加速?
0
9crk  发布于 2016-03-07 10:25:29
[quote][url=forum.php?mod=redirect&goto=findpost&pid=26111&ptid=4858]zyqhziee 发表于 2016-3-7 08:36[/url]
海思的IVE对一些常用算子进行加速,能否通过封装调用IVE库对一些算法进行加速?[/quote]

当然可以,这才是正确的算法开发方法。。opencv很慢的,在ARM+DSP结构的芯片里做算法的时候,经常只是ARM上只用了opencv的数据结构,常用算子都是抠出来放到DSP上去跑的。这个IVE就相当于DSP了。
0
zyqhziee  发布于 2016-03-07 14:00:04
[quote][url=forum.php?mod=redirect&goto=findpost&pid=26120&ptid=4858]9crk 发表于 2016-3-7 10:25[/url]
当然可以,这才是正确的算法开发方法。。opencv很慢的,在ARM+DSP结构的芯片里做算法的时候,经常只是ARM ...[/quote]

希望谁能给一个用IVE部分加速后的OpenCV版本啊。。。其实这应该是海思做的事情。
0
rootmain  发布于 2016-03-09 11:06:41
不错的帖子
0
nschcl  发布于 2016-03-27 12:19:20
好强大的资料
0
成都魏星  发布于 2016-04-14 15:24:13
[quote][url=forum.php?mod=redirect&goto=findpost&pid=26120&ptid=4858]9crk 发表于 2016-3-7 10:25[/url]
当然可以,这才是正确的算法开发方法。。opencv很慢的,在ARM+DSP结构的芯片里做算法的时候,经常只是ARM ...[/quote]

海思提供了IVE的api函数的吗?这个需要自己去调试吧
0
lilione  发布于 2016-05-18 10:27:42
opencv 的不同版本好像都有一些莫名其妙的问题,都需要一些小修改才能编译。只能找一个可行的版本,以后就用它了。
0
wwwbbk1  发布于 2016-07-19 09:04:17
用纯软件计算速度肯定是个硬伤。通过缩小图片的方法有点治标不治本 。如果芯片带IVE功能可以考虑使用IVE
0
wwwbbk1  发布于 2016-07-19 09:05:13
[quote][url=forum.php?mod=redirect&goto=findpost&pid=20819&ptid=4858]tornado303 发表于 2015-10-8 18:05[/url]
有人移植opencv到海思3516A上吗, 是不是所有的函数都可以正常使用?

另外执行命令build  opencv-2.4.9  ...[/quote]

我移植到16A,计算速度就别指望有多快了
0
wwwbbk1  发布于 2016-07-19 09:06:51
[quote][url=forum.php?mod=redirect&goto=findpost&pid=26120&ptid=4858]9crk 发表于 2016-3-7 10:25[/url]
当然可以,这才是正确的算法开发方法。。opencv很慢的,在ARM+DSP结构的芯片里做算法的时候,经常只是ARM ...[/quote]

请问大神用过IVE里的SVM吗?OpenCV的SVM训练有没有可以参考的?
0
9crk  发布于 2016-07-19 09:20:44
本帖最后由 9crk 于 2016-7-19 11:48 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=34238&ptid=4858]wwwbbk1 发表于 2016-7-19 09:06[/url]
请问大神用过IVE里的SVM吗?OpenCV的SVM训练有没有可以参考的?[/quote]

检测人脸用不到SVM的,它是haar特征+adaboost结构,虽然也是用的xml保存数据,但是用不了的。。opencv训练svm/ann我写了个教程,等我攒够了IVE的教程再一次性发布,,暂不公开:lol
0
wwwbbk1  发布于 2016-07-19 17:11:03
期待大神的教程!!!!
0
9crk  发布于 2016-08-03 14:28:08
本帖最后由 9crk 于 2019-1-16 14:16 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=34311&ptid=4858]wwwbbk1 发表于 2016-7-19 17:11[/url]
期待大神的教程!!!![/quote]

已发布:[url]http://bbs.ebaina.com/forum.php?mod=viewthread&tid=12171[/url]
0
1669877854  发布于 2016-08-30 15:39:36
大神请指教!
0
isupercar  发布于 2016-09-30 23:50:03
学习了。海思内部的图像处理能用起来就更好了。
0
peng810@msn.com  发布于 2016-10-14 18:56:04
个人觉得用opencv自带的人脸识别的话,效果不是很好,稍微偏一点,就识别不了了,使用性很差。
0
9crk  发布于 2016-10-17 11:48:11
[quote][url=forum.php?mod=redirect&goto=findpost&pid=39504&ptid=4858]peng810@msn.com 发表于 2016-10-14 18:56[/url]
个人觉得用opencv自带的人脸识别的话,效果不是很好,稍微偏一点,就识别不了了,使用性很差。[/quote]

可以训练误检图片的,精度和效果都决定于你怎么用它。haar+adaboost 是一种比较不错的方法,就好像你分析频谱效果很差不能怪FFT算法,你得做好预处理和窗函数优化呀。。:lol
0
hao1992  发布于 2017-03-22 10:46:19
楼主好,我按这个教程做,在用cmake中configure时碰到错误,查了之后说是某些组件不支持,我去掉然后顺利通过,在make和make install中没有遇到错误,但最后用工具链编译文件:arm-hisiv200-linux-g++ face.cpp -I/usr/local/opencv/output/include/opencv -lopencv_highgui -lopencv_core -lopencv_imgproc -lpthread -lrt -lopencv_objdetect -o face时报错(如图),网上查了,有些帖子(http://www.fx114.net/qa-22-65068.aspx)说是链接库顺序不对,但把这几个库的顺序修改了好几次,问题还是没解决,楼主怎么看呢?谢谢了    我用的是5331的交叉工具链glibc
0
jim_xiao  发布于 2017-03-23 09:04:09
不错,学习了
0
9crk  发布于 2017-03-23 09:57:56
[quote][url=forum.php?mod=redirect&goto=findpost&pid=46955&ptid=4858]hao1992 发表于 2017-3-22 10:46[/url]
楼主好,我按这个教程做,在用cmake中configure时碰到错误,查了之后说是某些组件不支持,我去掉然后顺利通 ...[/quote]

你这个就是缺少了libjpeg库,可能你在编译opencv时把jpeg库也去掉了,所以现在要单独链接jpeg库。

arm-hisiv200-linux-g++ face.cpp -I/usr/local/opencv/output/include/opencv -lopencv_highgui -lopencv_core -lopencv_imgproc -lpthread -lrt -lopencv_objdetect -ljpeg -o face
0
hao1992  发布于 2017-03-24 11:21:54
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47038&ptid=4858]9crk 发表于 2017-3-23 09:57[/url]
你这个就是缺少了libjpeg库,可能你在编译opencv时把jpeg库也去掉了,所以现在要单独链接jpeg库。

arm ...[/quote]

多谢楼主,问题解决了,我重新编译了次opencv源码,把PNG,JPEG,TIFF库都添加了,编译通过了
0
lyy111  发布于 2017-03-28 19:05:03
不错,学习一下,,
0
zhengju007  发布于 2017-04-05 21:12:14
此贴非常不错。
0
桃花岛主  发布于 2017-04-06 21:19:44
[quote][url=forum.php?mod=redirect&goto=findpost&pid=12056&ptid=4858]drafour 发表于 2015-1-30 09:30[/url]
我用2.0移植海思3515成功了,但参数像你那么配置,在海思3515上单独运行图片人脸接侧,检测一张得要7,8秒 ...[/quote]

按这个速度的话好像是不能用啊,必须实时的跟踪检测到才行哦
0
9crk  发布于 2017-04-12 11:14:24
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47833&ptid=4858]桃花岛主 发表于 2017-4-6 21:19[/url]
按这个速度的话好像是不能用啊,必须实时的跟踪检测到才行哦[/quote]

其实吧。像很多美颜相机都是这样做的:

把人脸跟踪分为两部分: haar人脸检测+角点跟踪。人脸检测很耗时间,但一旦检测到了之后,就可以立即提取出人脸来,并做角点检测,然后跟踪角点就可以了。跟踪角点这个算法是很快的。

所以很多美颜相机 ,如果你横着脑袋进入镜头,就抓不到你的脸,竖着进入镜头,然后再横着脑袋,就可以持续跟踪到你的脸,就是这么个原因。

这个帖子只是个砖,带大家迅速入门,不浪费时间。:lol
0
添加附件:文件小于20M
上传
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区