想在Android手机上实现人脸检测,于是搭建一个OpenCV4Android的环境。具体参考如下网址:http://my.eoe.cn/sandking/archive/2999.html ,http://www.360doc.com/content/13/1103/10/14479769_326248493.shtml
第二个网址中主要参考cygwin需要下载的软件。
在搭建好环境后,发现OpenCV4Android自带face detection例子,运行了一下发现。。。。竟然检测不到人脸。把lbpcascade_frontalface.xml文件换成了haarcascade_frontalface_alt_tree.xml依然检测不到,好奇怪。只有我遇到这个问题了吗??
另外这个例子有java和native(JNI)两种实现方式,其中java好慢好卡(用了haar那个XML文件),native的速度还不错,这是不得不学JNI的节奏了。
学习例子里的JNI程序源码发现,好像没有用CascadeClassifier(实际是使用了detection_based_tracker,一个封装过的CascadeClassifier,这里是后来学习中发现原来理解错误的修改),于是就想着自己来实现一个JNI的CascadeClassifier(修改加工源代码=,=)。
对在eclipse里JNI有关操作参考http://blog.csdn.net/lhq186/article/details/18499653 。(好吧,这个网址前面的前两个网页差不多感觉,但是后面的内容还是有用的。)
我所遇到的问题是在cmd进入 项目/bin/classes路径下使用 javah -jni com.xxx.xxx.ImageProcess时报错 错误:找不到类org.opencv.core.Mat 。这是我在ImageProcess.java中import了这个类。解决方法为:把OpenCv的sdk\java\bin\classes路径添加到系统环境变量CLASSPATH里。
在编辑.cpp文件时存在#include
目前先写到这里,边学边记录吧。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
最终,我找到了face detection例子检测不到人脸的原因,原来手机要横着拿!!!!!