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