1 /*
2  *  minimal.cpp
3  *  EDISON
4  *
5  *  Created by Fabio Riccardi on 4/27/05.
6  *  Copyright 2005 __MyCompanyName__. All rights reserved.
7  *
8  */
9 
10 #include <jni.h>
11 #include <stdarg.h>
12 #include <stdlib.h>
13 
14 #include "segm/msImageProcessor.h"
15 
16 bool stop_flag = false;
17 int percentDone = 0;
18 
bgLogVar(const char *,va_list)19 void bgLogVar(const char *, va_list) { }
20 
Java_com_lightcrafts_utils_Segment_segmentImage(JNIEnv * env,jclass clazz,jbyteArray image,jint channels,jint height,jint width)21 extern "C" JNIEXPORT jbyteArray JNICALL Java_com_lightcrafts_utils_Segment_segmentImage
22   (JNIEnv *env, jclass clazz, jbyteArray image, jint channels, jint height, jint width)
23 {
24     byte *data = (byte *) env->GetPrimitiveArrayCritical(image, 0);
25 
26     msImageProcessor processor;
27 
28     if (channels == 1)
29       processor.DefineImage(data, GRAYSCALE, height, width);
30     else
31       processor.DefineImage(data, COLOR, height, width);
32 
33     env->ReleasePrimitiveArrayCritical(image, data, 0);
34 
35     processor.SetSpeedThreshold(0.5);
36     processor.Segment(4, 4.0, 20, HIGH_SPEEDUP);
37 
38     int imageSize = height * width * channels;
39 
40     jbyteArray result = env->NewByteArray(imageSize);
41 
42     byte *out_data = (byte *) env->GetPrimitiveArrayCritical(result, 0);
43 
44     processor.GetResults(out_data);
45 
46     env->ReleasePrimitiveArrayCritical(result, out_data, 0);
47 
48     return result;
49 }
50