[][]
//------------------------------ //vector<Rect> faces; //equalizeHist( grayImage, grayImage ); //face_cascade.detectMultiScale( grayImage, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); // for( int i = 0; i < faces.size(); i++ ){ // Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); // ellipse( srcImage, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); //} //imwrite("rstsrc.bmp",srcImage);
sa
// // Created by duanjiwei on 2016/9/9. // #include <jni.h> #include <opencv2/opencv.hpp> extern "C" { #define MAX_NUM 100 using namespace cv; using namespace std; JNIEXPORT jintArray JNICALL Java_com_example_duanjiwei_ndkdemoapp_MainActivity_grayProc(JNIEnv *env, jclass obj, jintArray buf, jstring str , jint w, jint h){ const String face_cascade_name = "haarcascade_frontalface_alt.xml"; CascadeClassifier face_cascade; jclass clsstring = env->FindClass("java/lang/String"); //获取java.lang.String的类型 jstring strencode = env->NewStringUTF("utf-8"); //转码 //获取clssting(byte[],String) 的构造器,将本地byte[]数组转换成一个新String jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray barr = (jbyteArray)env->CallObjectMethod(jstr, mid, strencode); //建立barr数组 jsize alen = env->GetArrayLength(barr); //获取数组barr的长度 jbyte* ba = env->GetByteArrayElement(barr, JNI_FALSE); //将jbyteArray转换成jbyte* char* rtn; if(alen>0){ rtn = (char*)malloc(alen + 1); memcpy(rtn, ba, alen); rtn[alen] = 0; } env->ReleaseByteArrayElement(barr, ba, 0); bool bIsLoad = face_cascade.load( rtn ); if( bIsLoad == false ){ return -1; } jboolean ptfalse = false; jint* srcBuf = env->GetIntArrayElements(buf, &ptfalse); if(srcBuf == NULL){ return 0; } int size=w * h; Mat srcImage(h, w, CV_8UC4, (unsigned char*)srcBuf); Mat grayImage; cvtColor(srcImage, grayImage, COLOR_BGRA2GRAY); cvtColor(grayImage, srcImage, COLOR_GRAY2BGRA); //---------------------------------- jintArray result = env->NewIntArray(size); env->SetIntArrayRegion(result, 0, size, srcBuf); env->ReleaseIntArrayElements(buf, srcBuf, 0); return result; } } //------extern "C"