#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
#include <android/log.h>
#include <study_opencv_FaceRec.h>
#include <jni.h>
#define
LOG_TAG
"opencv_face_detect"
#define
LOGI(...)
__android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define
LOGE(...)
__android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;
void detect_and_draw( IplImage* image );
const char* cascade_name =
char* jstring2String(JNIEnv*, jstring);
//主要功能函数
int captureFromImage(char* xml, char* filename, char* outfile)
{
//开辟内存空间
//载入图像
//释放内存
}
//主要识别函数
void detect_and_draw( IplImage* img )
{
//保存灰度图像,8位,单通道
//对一个double型的数进行四舍五入,并返回一个整型数
//将BGR图像转换为灰度图像
//缩放源图像到目标图像
//用来使灰度图象直方图均衡化,该方法归一化图像亮度和增强对比度。
//storage 用来存储检测到的一序列候选目标矩形框的内存区域。
//scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数。例如1.1指将搜索窗口依次扩大10%
//min_neighbors 构成检测目标的相邻矩形的最小个数(缺省-1)。
//flags 操作方式。当前唯一可以定义的操作方式是 CV_HAAR_DO_CANNY_PRUNING。如果被设定,函数利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域
//min_size 检测窗口的最小尺寸
//便利检测结果,在图上画圈标记
//画圈
//释放内存
}
JNIEXPORT void JNICALL Java_study_opencv_FaceRec_detect
{
}
//jstring to char*
char* jstring2String(JNIEnv* env, jstring jstr)
{
//得到Java中的类
//声明一个jstring类型对象,内容为编码方式
//得到java类中某方法的ID
//用ID调用java类的方法,执行。参数:输入字符串,方法ID,编码方式(jstring),返回byte数组(jbyteArray)。
//得到数组长度(jsize)
//声明指针,指向byte数组内容
//为(char*)指针 rtn 申请空间,多申请一个char位置
//内存拷贝,将原byte数组内容copy到char*指针所指位置。长度为alen
//将最后一个字符设置为0,表示为nuRFll
//释放java类中的数组空间
}
FROM: http://blog.sina.com.cn/s/blog_5b2469f20100zvmx.html