├── .classpath
├── .cproject
├── .gitignore
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── AndroidManifest.xml
├── README
├── build.xml
├── jni
├── Android.mk
├── Application.mk
└── jni_part.cpp
├── obj
└── local
│ ├── armeabi-v7a
│ ├── libgnustl_static.a
│ ├── libnative_sample.so
│ └── objs
│ │ └── native_sample
│ │ ├── jni_part.o
│ │ └── jni_part.o.d
│ └── armeabi
│ ├── libgnustl_static.a
│ ├── libnative_sample.so
│ └── objs
│ └── native_sample
│ ├── jni_part.o
│ └── jni_part.o.d
├── proguard-project.txt
├── project.properties
├── res
├── drawable-hdpi
│ └── ic_action_search.png
├── drawable-mdpi
│ └── ic_action_search.png
├── drawable-xhdpi
│ └── ic_action_search.png
├── drawable
│ └── icon.png
├── layout
│ ├── activity_main.xml
│ └── main.xml
├── menu
│ └── activity_main.xml
├── raw
│ ├── haarcascade_frontalface_alt.xml
│ ├── haarcascade_frontalface_alt2.xml
│ └── lbpcascade_frontalface.xml
├── values-large
│ └── dimens.xml
└── values
│ ├── dimens.xml
│ └── strings.xml
└── src
└── org
└── opencv
└── face
├── MainActivity.java
├── Sample3Native.java
├── Sample3View.java
└── SampleViewBase.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.cproject:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
44 |
47 |
48 |
49 |
50 |
55 |
58 |
59 |
60 |
61 |
66 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # built application files
2 | *.apk
3 | *.ap_
4 |
5 | # files for the dex VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # generated files
12 | bin/
13 | gen/
14 | libs/
15 |
16 | # Local configuration file (sdk path, etc)
17 | local.properties
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | Face Recognition
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder
10 | auto,full,incremental,
11 |
12 |
13 | ?name?
14 |
15 |
16 |
17 | org.eclipse.cdt.make.core.append_environment
18 | true
19 |
20 |
21 | org.eclipse.cdt.make.core.autoBuildTarget
22 |
23 |
24 |
25 | org.eclipse.cdt.make.core.buildArguments
26 |
27 |
28 |
29 | org.eclipse.cdt.make.core.buildCommand
30 | E:/Android/android-ndk-r8/ndk-build.cmd
31 |
32 |
33 | org.eclipse.cdt.make.core.cleanBuildTarget
34 | clean
35 |
36 |
37 | org.eclipse.cdt.make.core.contents
38 | org.eclipse.cdt.make.core.activeConfigSettings
39 |
40 |
41 | org.eclipse.cdt.make.core.enableAutoBuild
42 | true
43 |
44 |
45 | org.eclipse.cdt.make.core.enableCleanBuild
46 | false
47 |
48 |
49 | org.eclipse.cdt.make.core.enableFullBuild
50 | true
51 |
52 |
53 | org.eclipse.cdt.make.core.fullBuildTarget
54 |
55 |
56 |
57 | org.eclipse.cdt.make.core.stopOnError
58 | true
59 |
60 |
61 | org.eclipse.cdt.make.core.useDefaultBuildCmd
62 | false
63 |
64 |
65 |
66 |
67 | com.android.ide.eclipse.adt.ResourceManagerBuilder
68 |
69 |
70 |
71 |
72 | com.android.ide.eclipse.adt.PreCompilerBuilder
73 |
74 |
75 |
76 |
77 | org.eclipse.jdt.core.javabuilder
78 |
79 |
80 |
81 |
82 | com.android.ide.eclipse.adt.ApkBuilder
83 |
84 |
85 |
86 |
87 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
88 | full,incremental,
89 |
90 |
91 |
92 |
93 |
94 | com.android.ide.eclipse.adt.AndroidNature
95 | org.eclipse.jdt.core.javanature
96 | org.eclipse.cdt.core.cnature
97 | org.eclipse.cdt.core.ccnature
98 | org.eclipse.cdt.managedbuilder.core.managedBuildNature
99 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
100 |
101 |
102 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | #Thu Dec 13 14:27:29 IST 2012
2 | eclipse.preferences.version=1
3 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
6 | org.eclipse.jdt.core.compiler.compliance=1.5
7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
12 | org.eclipse.jdt.core.compiler.source=1.5
13 |
--------------------------------------------------------------------------------
/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
38 |
39 |
42 |
43 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/README:
--------------------------------------------------------------------------------
1 | This is an Android application for Face Detection using the OPENCV API.
--------------------------------------------------------------------------------
/build.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
49 |
50 |
51 |
52 |
56 |
57 |
69 |
70 |
71 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/jni/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 |
5 | include ../../sdk/native/jni/OpenCV.mk
6 |
7 | LOCAL_MODULE := native_sample
8 | LOCAL_SRC_FILES := jni_part.cpp
9 | LOCAL_LDLIBS += -llog -ldl
10 |
11 | include $(BUILD_SHARED_LIBRARY)
12 |
--------------------------------------------------------------------------------
/jni/Application.mk:
--------------------------------------------------------------------------------
1 | APP_STL := gnustl_static
2 | APP_CPPFLAGS := -frtti -fexceptions
3 | APP_ABI := armeabi
4 |
--------------------------------------------------------------------------------
/jni/jni_part.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | #include
10 | #include
11 | #include
12 |
13 | #define LOG_TAG "Ajay"
14 | #define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))
15 |
16 | using namespace std;
17 | using namespace cv;
18 |
19 | extern "C" {
20 | JNIEXPORT void JNICALL Java_org_opencv_face_Sample3View_FindFeatures(JNIEnv* env, jobject, jint width, jint height, jbyteArray yuv, jintArray bgra)
21 | {
22 | try {
23 | jbyte* _yuv = env->GetByteArrayElements(yuv, 0);
24 | jint* _bgra = env->GetIntArrayElements(bgra, 0);
25 |
26 | Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv);
27 | Mat mbgra(height, width, CV_8UC4, (unsigned char *)_bgra);
28 | Mat mgray(height, width, CV_8UC1, (unsigned char *)_yuv);
29 |
30 | cvtColor(myuv, mbgra, CV_YUV420sp2BGR, 4);
31 |
32 | env->ReleaseIntArrayElements(bgra, _bgra, 0);
33 | env->ReleaseByteArrayElements(yuv, _yuv, 0);
34 | } catch(cv::Exception e)
35 | {
36 | LOGD("nativeCreateObject catched cv::Exception: %s", e.what());
37 | jclass je = env->FindClass("org/opencv/core/CvException");
38 | if(!je)
39 | je = env->FindClass("java/lang/Exception");
40 | env->ThrowNew(je, e.what());
41 | }
42 | catch (...)
43 | {
44 | LOGD("nativeCreateObject catched unknown exception");
45 | jclass je = env->FindClass("java/lang/Exception");
46 | env->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}");
47 | }
48 |
49 |
50 | }
51 | JNIEXPORT void JNICALL Java_org_opencv_face_Sample3View_FindFaces(JNIEnv* env, jobject, jstring jImageName,jstring jFileName)
52 | {
53 | try {
54 |
55 | const char* jnamestr = env->GetStringUTFChars(jFileName, NULL);
56 | string stdFileName(jnamestr);
57 | const char* jimagestr = env->GetStringUTFChars(jImageName, NULL);
58 | string stdImageName(jimagestr);
59 |
60 | LOGD("Image = %s ",stdImageName.c_str());
61 |
62 | CascadeClassifier haar_cascade;
63 | if(haar_cascade.load(stdFileName)){
64 | LOGD("Haar successfully loaded");
65 | }
66 | LOGD("cascade : %s ",stdFileName.c_str());
67 | Mat original = imread(stdImageName+".jpg", 1);
68 | if(! original.data ) // Check for invalid input
69 | {
70 | LOGD("Could not load image");
71 | }
72 | Mat gray ;//= original.clone();
73 | cvtColor(original,gray,CV_BGR2GRAY);
74 | vector< Rect_ > faces;
75 | haar_cascade.detectMultiScale(gray, faces, 1.1, 3, 0, Size(20,60));
76 | LOGD("FACES : %d ",faces.size());
77 | if(faces.size()>0) {
78 | Rect face_i = faces[0];
79 | Mat original_face = original(face_i);
80 | resize(original_face,original_face,Size(200,200));
81 | imwrite(stdImageName+"_det.jpg",original_face);
82 | }
83 |
84 | return;
85 | } catch(cv::Exception e)
86 | {
87 | LOGD("nativeCreateObject catched cv::Exception: %s", e.what());
88 | jclass je = env->FindClass("org/opencv/core/CvException");
89 | if(!je)
90 | je = env->FindClass("java/lang/Exception");
91 | env->ThrowNew(je, e.what());
92 | }
93 | catch (...)
94 | {
95 | LOGD("nativeCreateObject catched unknown exception");
96 | jclass je = env->FindClass("java/lang/Exception");
97 | env->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}");
98 | }
99 |
100 | }
101 |
102 | JNIEXPORT int JNICALL Java_org_opencv_face_Sample3View_Find(JNIEnv* env, jobject, jstring jImageName,jstring jFileName,jstring jCsv)
103 | {
104 | try {
105 |
106 | const char* jnamestr = env->GetStringUTFChars(jFileName, NULL);
107 | string stdFileName(jnamestr);
108 | const char* jimagestr = env->GetStringUTFChars(jImageName, NULL);
109 | string stdImageName(jimagestr);
110 | const char* jCsvstr = env->GetStringUTFChars(jCsv, NULL);
111 | string stdCsv(jCsvstr);
112 |
113 | vector images;
114 | vector labels;
115 | std::ifstream file(stdCsv.c_str(), ifstream::in);
116 | // vector v;
117 |
118 | LOGD("Image = %s ",stdImageName.c_str());
119 |
120 | string line, path, classlabel;
121 | while (getline(file, line)) {
122 | stringstream liness(line);
123 | getline(liness, path, ';');
124 | getline(liness, classlabel);
125 | if(!path.empty() && !classlabel.empty()) {
126 | images.push_back(imread(path, 0));
127 | labels.push_back(atoi(classlabel.c_str()));
128 | }
129 | }
130 |
131 | int im_width = images[0].cols;
132 | int im_height = images[0].rows;
133 | // Create a FaceRecognizer and train it on the given images:
134 | Ptr model = createEigenFaceRecognizer();
135 | model->train(images, labels);
136 |
137 | CascadeClassifier haar_cascade;
138 | haar_cascade.load(stdFileName);
139 | for(;;)
140 | {
141 | Mat original = imread(stdImageName+".jpg", 1);
142 | Mat gray = original.clone();
143 | cvtColor(original,gray,CV_BGR2GRAY);
144 | vector< Rect_ > faces;
145 | haar_cascade.detectMultiScale(gray, faces, 1.1, 3, 0, Size(20,60));
146 | LOGD("No of faces = %d",faces.size());
147 | for(int i = 0; i < faces.size(); i++) {
148 | // Process face by face:
149 | Rect face_i = faces[i];
150 | // Crop the face from the image.
151 | Mat face = gray(face_i);
152 | Mat face_resized;
153 | cv::resize(face, face_resized, Size(im_width, im_height), 1.0, 1.0, INTER_CUBIC);
154 | // Now perform the prediction
155 | double predicted_confidence = 0.0;
156 | int prediction;
157 | model->predict(face_resized,prediction,predicted_confidence);
158 | LOGD("Prediction = %d Predicted Confidence = %Lf",prediction,predicted_confidence);
159 | if(prediction>=0)
160 | return prediction;
161 | // else
162 | // return -1;
163 | }
164 | return -1;
165 | }
166 |
167 | } catch(cv::Exception e)
168 | {
169 | LOGD("nativeCreateObject catched cv::Exception: %s", e.what());
170 | jclass je = env->FindClass("org/opencv/core/CvException");
171 | if(!je)
172 | je = env->FindClass("java/lang/Exception");
173 | env->ThrowNew(je, e.what());
174 | }
175 | catch (...)
176 | {
177 | LOGD("nativeCreateObject catched unknown exception");
178 | jclass je = env->FindClass("java/lang/Exception");
179 | env->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}");
180 | }
181 |
182 | }
183 |
184 | }
185 |
--------------------------------------------------------------------------------
/obj/local/armeabi-v7a/libgnustl_static.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi-v7a/libgnustl_static.a
--------------------------------------------------------------------------------
/obj/local/armeabi-v7a/libnative_sample.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi-v7a/libnative_sample.so
--------------------------------------------------------------------------------
/obj/local/armeabi-v7a/objs/native_sample/jni_part.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi-v7a/objs/native_sample/jni_part.o
--------------------------------------------------------------------------------
/obj/local/armeabi-v7a/objs/native_sample/jni_part.o.d:
--------------------------------------------------------------------------------
1 | obj/local/armeabi-v7a/objs/native_sample/jni_part.o: jni/jni_part.cpp \
2 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/jni.h \
3 | ../../sdk/native/jni/include/opencv2/core/core.hpp \
4 | ../../sdk/native/jni/include/opencv2/core/types_c.h \
5 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/assert.h \
6 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs.h \
7 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs_elf.h \
8 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdlib.h \
9 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/string.h \
10 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/malloc.h \
11 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h \
12 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/strings.h \
13 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/types.h \
14 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdint.h \
15 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/_types.h \
16 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/_types.h \
17 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/posix_types.h \
18 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/stddef.h \
19 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/compiler.h \
20 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/posix_types.h \
21 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/types.h \
22 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/types.h \
23 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/kernel.h \
24 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/sysmacros.h \
25 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/memory.h \
26 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/math.h \
27 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/limits.h \
28 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/limits.h \
29 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/limits.h \
30 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/internal_types.h \
31 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/limits.h \
32 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/syslimits.h \
33 | ../../sdk/native/jni/include/opencv2/core/version.hpp \
34 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/algorithm \
35 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/cmath \
36 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/complex \
37 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/map \
38 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/vector \
39 | ../../sdk/native/jni/include/opencv2/core/operations.hpp \
40 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/limits \
41 | ../../sdk/native/jni/include/opencv2/core/mat.hpp \
42 | ../../sdk/native/jni/include/opencv2/imgproc/imgproc.hpp \
43 | ../../sdk/native/jni/include/opencv2/imgproc/types_c.h \
44 | ../../sdk/native/jni/include/opencv2/core/core_c.h \
45 | ../../sdk/native/jni/include/opencv2/features2d/features2d.hpp \
46 | ../../sdk/native/jni/include/opencv2/flann/miniflann.hpp \
47 | ../../sdk/native/jni/include/opencv2/flann/defines.h \
48 | ../../sdk/native/jni/include/opencv2/flann/config.h
49 |
50 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/jni.h:
51 |
52 | ../../sdk/native/jni/include/opencv2/core/core.hpp:
53 |
54 | ../../sdk/native/jni/include/opencv2/core/types_c.h:
55 |
56 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/assert.h:
57 |
58 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs.h:
59 |
60 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs_elf.h:
61 |
62 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdlib.h:
63 |
64 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/string.h:
65 |
66 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/malloc.h:
67 |
68 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h:
69 |
70 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/strings.h:
71 |
72 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/types.h:
73 |
74 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdint.h:
75 |
76 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/_types.h:
77 |
78 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/_types.h:
79 |
80 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/posix_types.h:
81 |
82 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/stddef.h:
83 |
84 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/compiler.h:
85 |
86 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/posix_types.h:
87 |
88 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/types.h:
89 |
90 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/types.h:
91 |
92 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/kernel.h:
93 |
94 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/sysmacros.h:
95 |
96 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/memory.h:
97 |
98 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/math.h:
99 |
100 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/limits.h:
101 |
102 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/limits.h:
103 |
104 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/limits.h:
105 |
106 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/internal_types.h:
107 |
108 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/limits.h:
109 |
110 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/syslimits.h:
111 |
112 | ../../sdk/native/jni/include/opencv2/core/version.hpp:
113 |
114 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/algorithm:
115 |
116 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/cmath:
117 |
118 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/complex:
119 |
120 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/map:
121 |
122 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/vector:
123 |
124 | ../../sdk/native/jni/include/opencv2/core/operations.hpp:
125 |
126 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/limits:
127 |
128 | ../../sdk/native/jni/include/opencv2/core/mat.hpp:
129 |
130 | ../../sdk/native/jni/include/opencv2/imgproc/imgproc.hpp:
131 |
132 | ../../sdk/native/jni/include/opencv2/imgproc/types_c.h:
133 |
134 | ../../sdk/native/jni/include/opencv2/core/core_c.h:
135 |
136 | ../../sdk/native/jni/include/opencv2/features2d/features2d.hpp:
137 |
138 | ../../sdk/native/jni/include/opencv2/flann/miniflann.hpp:
139 |
140 | ../../sdk/native/jni/include/opencv2/flann/defines.h:
141 |
142 | ../../sdk/native/jni/include/opencv2/flann/config.h:
143 |
--------------------------------------------------------------------------------
/obj/local/armeabi/libgnustl_static.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi/libgnustl_static.a
--------------------------------------------------------------------------------
/obj/local/armeabi/libnative_sample.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi/libnative_sample.so
--------------------------------------------------------------------------------
/obj/local/armeabi/objs/native_sample/jni_part.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/obj/local/armeabi/objs/native_sample/jni_part.o
--------------------------------------------------------------------------------
/obj/local/armeabi/objs/native_sample/jni_part.o.d:
--------------------------------------------------------------------------------
1 | obj/local/armeabi/objs/native_sample/jni_part.o: jni/jni_part.cpp \
2 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/jni.h \
3 | ../../sdk/native/jni/include/opencv2/core/core.hpp \
4 | ../../sdk/native/jni/include/opencv2/core/types_c.h \
5 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/assert.h \
6 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs.h \
7 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs_elf.h \
8 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdlib.h \
9 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/string.h \
10 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/malloc.h \
11 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h \
12 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/strings.h \
13 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/types.h \
14 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdint.h \
15 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/_types.h \
16 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/_types.h \
17 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/posix_types.h \
18 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/stddef.h \
19 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/compiler.h \
20 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/posix_types.h \
21 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/types.h \
22 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/types.h \
23 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/kernel.h \
24 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/sysmacros.h \
25 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/memory.h \
26 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/math.h \
27 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/limits.h \
28 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/limits.h \
29 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/limits.h \
30 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/internal_types.h \
31 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/limits.h \
32 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/syslimits.h \
33 | ../../sdk/native/jni/include/opencv2/core/version.hpp \
34 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/algorithm \
35 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/cmath \
36 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/complex \
37 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/map \
38 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/vector \
39 | ../../sdk/native/jni/include/opencv2/core/operations.hpp \
40 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/limits \
41 | ../../sdk/native/jni/include/opencv2/core/mat.hpp \
42 | ../../sdk/native/jni/include/opencv2/imgproc/imgproc.hpp \
43 | ../../sdk/native/jni/include/opencv2/imgproc/types_c.h \
44 | ../../sdk/native/jni/include/opencv2/core/core_c.h \
45 | ../../sdk/native/jni/include/opencv2/features2d/features2d.hpp \
46 | ../../sdk/native/jni/include/opencv2/flann/miniflann.hpp \
47 | ../../sdk/native/jni/include/opencv2/flann/defines.h \
48 | ../../sdk/native/jni/include/opencv2/flann/config.h \
49 | ../../sdk/native/jni/include/opencv2/contrib/contrib.hpp \
50 | ../../sdk/native/jni/include/opencv2/objdetect/objdetect.hpp \
51 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/deque \
52 | ../../sdk/native/jni/include/opencv2/contrib/retina.hpp \
53 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/valarray \
54 | ../../sdk/native/jni/include/opencv2/highgui/highgui.hpp \
55 | ../../sdk/native/jni/include/opencv2/highgui/highgui_c.h \
56 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/fstream \
57 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/log.h
58 |
59 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/jni.h:
60 |
61 | ../../sdk/native/jni/include/opencv2/core/core.hpp:
62 |
63 | ../../sdk/native/jni/include/opencv2/core/types_c.h:
64 |
65 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/assert.h:
66 |
67 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs.h:
68 |
69 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/cdefs_elf.h:
70 |
71 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdlib.h:
72 |
73 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/string.h:
74 |
75 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/malloc.h:
76 |
77 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/alloca.h:
78 |
79 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/strings.h:
80 |
81 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/types.h:
82 |
83 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/stdint.h:
84 |
85 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/_types.h:
86 |
87 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/_types.h:
88 |
89 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/posix_types.h:
90 |
91 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/stddef.h:
92 |
93 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/compiler.h:
94 |
95 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/posix_types.h:
96 |
97 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/asm/types.h:
98 |
99 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/types.h:
100 |
101 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/kernel.h:
102 |
103 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/sysmacros.h:
104 |
105 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/memory.h:
106 |
107 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/math.h:
108 |
109 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/limits.h:
110 |
111 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/limits.h:
112 |
113 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/linux/limits.h:
114 |
115 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/internal_types.h:
116 |
117 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/machine/limits.h:
118 |
119 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/sys/syslimits.h:
120 |
121 | ../../sdk/native/jni/include/opencv2/core/version.hpp:
122 |
123 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/algorithm:
124 |
125 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/cmath:
126 |
127 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/complex:
128 |
129 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/map:
130 |
131 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/vector:
132 |
133 | ../../sdk/native/jni/include/opencv2/core/operations.hpp:
134 |
135 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/limits:
136 |
137 | ../../sdk/native/jni/include/opencv2/core/mat.hpp:
138 |
139 | ../../sdk/native/jni/include/opencv2/imgproc/imgproc.hpp:
140 |
141 | ../../sdk/native/jni/include/opencv2/imgproc/types_c.h:
142 |
143 | ../../sdk/native/jni/include/opencv2/core/core_c.h:
144 |
145 | ../../sdk/native/jni/include/opencv2/features2d/features2d.hpp:
146 |
147 | ../../sdk/native/jni/include/opencv2/flann/miniflann.hpp:
148 |
149 | ../../sdk/native/jni/include/opencv2/flann/defines.h:
150 |
151 | ../../sdk/native/jni/include/opencv2/flann/config.h:
152 |
153 | ../../sdk/native/jni/include/opencv2/contrib/contrib.hpp:
154 |
155 | ../../sdk/native/jni/include/opencv2/objdetect/objdetect.hpp:
156 |
157 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/deque:
158 |
159 | ../../sdk/native/jni/include/opencv2/contrib/retina.hpp:
160 |
161 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/valarray:
162 |
163 | ../../sdk/native/jni/include/opencv2/highgui/highgui.hpp:
164 |
165 | ../../sdk/native/jni/include/opencv2/highgui/highgui_c.h:
166 |
167 | E:/Android/android-ndk-r8/sources/cxx-stl/gnu-libstdc++/include/fstream:
168 |
169 | E:/Android/android-ndk-r8/platforms/android-14/arch-arm/usr/include/android/log.h:
170 |
--------------------------------------------------------------------------------
/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | android.library.reference.1=../../sdk/java
14 | # Project target.
15 | target=android-10
16 | android.library=false
17 |
--------------------------------------------------------------------------------
/res/drawable-hdpi/ic_action_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/res/drawable-hdpi/ic_action_search.png
--------------------------------------------------------------------------------
/res/drawable-mdpi/ic_action_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/res/drawable-mdpi/ic_action_search.png
--------------------------------------------------------------------------------
/res/drawable-xhdpi/ic_action_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/res/drawable-xhdpi/ic_action_search.png
--------------------------------------------------------------------------------
/res/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ajay191191/Opencv-Face-Recognition/0591d0a24d854c82e3f94a57cb0f7ae29ab9e9b7/res/drawable/icon.png
--------------------------------------------------------------------------------
/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
13 |
14 |
22 |
23 |
30 |
31 |
38 |
39 |
40 |
41 |
42 |
49 |
50 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
17 |
22 |
27 |
32 |
37 |
38 |
42 |
43 |
47 |
--------------------------------------------------------------------------------
/res/menu/activity_main.xml:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/res/raw/lbpcascade_frontalface.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 | BOOST
9 | LBP
10 | 24
11 | 24
12 |
13 | GAB
14 | 0.9950000047683716
15 | 0.5000000000000000
16 | 0.9500000000000000
17 | 1
18 | 100
19 |
20 | 256
21 | 20
22 |
23 |
24 | <_>
25 | 3
26 | -0.7520892024040222
27 |
28 |
29 | <_>
30 |
31 | 0 -1 46 -67130709 -21569 -1426120013 -1275125205 -21585
32 | -16385 587145899 -24005
33 |
34 | -0.6543210148811340 0.8888888955116272
35 |
36 | <_>
37 |
38 | 0 -1 13 -163512766 -769593758 -10027009 -262145 -514457854
39 | -193593353 -524289 -1
40 |
41 | -0.7739216089248657 0.7278633713722229
42 |
43 | <_>
44 |
45 | 0 -1 2 -363936790 -893203669 -1337948010 -136907894
46 | 1088782736 -134217726 -741544961 -1590337
47 |
48 | -0.7068563103675842 0.6761534214019775
49 |
50 | <_>
51 | 4
52 | -0.4872078299522400
53 |
54 |
55 | <_>
56 |
57 | 0 -1 84 2147483647 1946124287 -536870913 2147450879
58 | 738132490 1061101567 243204619 2147446655
59 |
60 | -0.8083735704421997 0.7685696482658386
61 |
62 | <_>
63 |
64 | 0 -1 21 2147483647 263176079 1879048191 254749487 1879048191
65 | -134252545 -268435457 801111999
66 |
67 | -0.7698410153388977 0.6592915654182434
68 |
69 | <_>
70 |
71 | 0 -1 106 -98110272 1610939566 -285484400 -850010381
72 | -189334372 -1671954433 -571026695 -262145
73 |
74 | -0.7506558895111084 0.5444605946540833
75 |
76 | <_>
77 |
78 | 0 -1 48 -798690576 -131075 1095771153 -237144073 -65569 -1
79 | -216727745 -69206049
80 |
81 | -0.7775990366935730 0.5465461611747742
82 |
83 | <_>
84 | 4
85 | -1.1592328548431396
86 |
87 |
88 | <_>
89 |
90 | 0 -1 47 -21585 -20549 -100818262 -738254174 -20561 -36865
91 | -151016790 -134238549
92 |
93 | -0.5601882934570313 0.7743113040924072
94 |
95 | <_>
96 |
97 | 0 -1 12 -286003217 183435247 -268994614 -421330945
98 | -402686081 1090387966 -286785545 -402653185
99 |
100 | -0.6124526262283325 0.6978127956390381
101 |
102 | <_>
103 |
104 | 0 -1 26 -50347012 970882927 -50463492 -1253377 -134218251
105 | -50364513 -33619992 -172490753
106 |
107 | -0.6114496588706970 0.6537628173828125
108 |
109 | <_>
110 |
111 | 0 -1 8 -273 -135266321 1877977738 -2088243418 -134217987
112 | 2146926575 -18910642 1095231247
113 |
114 | -0.6854077577590942 0.5403239130973816
115 |
116 | <_>
117 | 5
118 | -0.7562355995178223
119 |
120 |
121 | <_>
122 |
123 | 0 -1 96 -1273 1870659519 -20971602 -67633153 -134250731
124 | 2004875127 -250 -150995969
125 |
126 | -0.4051094949245453 0.7584033608436585
127 |
128 | <_>
129 |
130 | 0 -1 33 -868162224 -76810262 -4262145 -257 1465211989
131 | -268959873 -2656269 -524289
132 |
133 | -0.7388162612915039 0.5340843200683594
134 |
135 | <_>
136 |
137 | 0 -1 57 -12817 -49 -541103378 -152950 -38993 -20481 -1153876
138 | -72478976
139 |
140 | -0.6582943797111511 0.5339496731758118
141 |
142 | <_>
143 |
144 | 0 -1 125 -269484161 -452984961 -319816180 -1594032130 -2111
145 | -990117891 -488975296 -520947741
146 |
147 | -0.5981323719024658 0.5323504805564880
148 |
149 | <_>
150 |
151 | 0 -1 53 557787431 670265215 -1342193665 -1075892225
152 | 1998528318 1056964607 -33570977 -1
153 |
154 | -0.6498787999153137 0.4913350641727448
155 |
156 | <_>
157 | 5
158 | -0.8085358142852783
159 |
160 |
161 | <_>
162 |
163 | 0 -1 60 -536873708 880195381 -16842788 -20971521 -176687276
164 | -168427659 -16777260 -33554626
165 |
166 | -0.5278195738792419 0.6946372389793396
167 |
168 | <_>
169 |
170 | 0 -1 7 -1 -62981529 -1090591130 805330978 -8388827 -41945787
171 | -39577 -531118985
172 |
173 | -0.5206505060195923 0.6329920291900635
174 |
175 | <_>
176 |
177 | 0 -1 98 -725287348 1347747543 -852489 -16809993 1489881036
178 | -167903241 -1 -1
179 |
180 | -0.7516061067581177 0.4232024252414703
181 |
182 | <_>
183 |
184 | 0 -1 44 -32777 1006582562 -65 935312171 -8388609 -1078198273
185 | -1 733886267
186 |
187 | -0.7639313936233521 0.4123568832874298
188 |
189 | <_>
190 |
191 | 0 -1 24 -85474705 2138828511 -1036436754 817625855
192 | 1123369029 -58796809 -1013468481 -194513409
193 |
194 | -0.5123769044876099 0.5791834592819214
195 |
196 | <_>
197 | 5
198 | -0.5549971461296082
199 |
200 |
201 | <_>
202 |
203 | 0 -1 42 -17409 -20481 -268457797 -134239493 -17473 -1 -21829
204 | -21846
205 |
206 | -0.3763174116611481 0.7298233509063721
207 |
208 | <_>
209 |
210 | 0 -1 6 -805310737 -2098262358 -269504725 682502698
211 | 2147483519 1740574719 -1090519233 -268472385
212 |
213 | -0.5352765917778015 0.5659480094909668
214 |
215 | <_>
216 |
217 | 0 -1 61 -67109678 -6145 -8 -87884584 -20481 -1073762305
218 | -50856216 -16849696
219 |
220 | -0.5678374171257019 0.4961479902267456
221 |
222 | <_>
223 |
224 | 0 -1 123 -138428633 1002418167 -1359008245 -1908670465
225 | -1346685918 910098423 -1359010520 -1346371657
226 |
227 | -0.5706262588500977 0.4572288393974304
228 |
229 | <_>
230 |
231 | 0 -1 9 -89138513 -4196353 1256531674 -1330665426 1216308261
232 | -36190633 33498198 -151796633
233 |
234 | -0.5344601869583130 0.4672054052352905
235 |
236 | <_>
237 | 5
238 | -0.8776460289955139
239 |
240 |
241 | <_>
242 |
243 | 0 -1 105 1073769576 206601725 -34013449 -33554433 -789514004
244 | -101384321 -690225153 -264193
245 |
246 | -0.7700348496437073 0.5943940877914429
247 |
248 | <_>
249 |
250 | 0 -1 30 -1432340997 -823623681 -49153 -34291724 -269484035
251 | -1342767105 -1078198273 -1277955
252 |
253 | -0.5043668746948242 0.6151274442672730
254 |
255 | <_>
256 |
257 | 0 -1 35 -1067385040 -195758209 -436748425 -134217731
258 | -50855988 -129 -1 -1
259 |
260 | -0.6808040738105774 0.4667325913906097
261 |
262 | <_>
263 |
264 | 0 -1 119 832534325 -34111555 -26050561 -423659521 -268468364
265 | 2105014143 -2114244 -17367185
266 |
267 | -0.4927591383457184 0.5401885509490967
268 |
269 | <_>
270 |
271 | 0 -1 82 -1089439888 -1080524865 2143059967 -1114121
272 | -1140949004 -3 -2361356 -739516
273 |
274 | -0.6445107460021973 0.4227822124958038
275 |
276 | <_>
277 | 6
278 | -1.1139287948608398
279 |
280 |
281 | <_>
282 |
283 | 0 -1 52 -1074071553 -1074003969 -1 -1280135430 -5324817 -1
284 | -335548482 582134442
285 |
286 | -0.5307556986808777 0.6258179545402527
287 |
288 | <_>
289 |
290 | 0 -1 99 -706937396 -705364068 -540016724 -570495027
291 | -570630659 -587857963 -33628164 -35848193
292 |
293 | -0.5227634310722351 0.5049746036529541
294 |
295 | <_>
296 |
297 | 0 -1 18 -2035630093 42119158 -268503053 -1671444 261017599
298 | 1325432815 1954394111 -805306449
299 |
300 | -0.4983572661876679 0.5106441378593445
301 |
302 | <_>
303 |
304 | 0 -1 111 -282529488 -1558073088 1426018736 -170526448
305 | -546832487 -5113037 -34243375 -570427929
306 |
307 | -0.4990860521793366 0.5060507059097290
308 |
309 | <_>
310 |
311 | 0 -1 92 1016332500 -606301707 915094269 -1080086049
312 | -1837027144 -1361600280 2147318747 1067975613
313 |
314 | -0.5695009231567383 0.4460467398166657
315 |
316 | <_>
317 |
318 | 0 -1 51 -656420166 -15413034 -141599534 -603435836
319 | 1505950458 -787556946 -79823438 -1326199134
320 |
321 | -0.6590405106544495 0.3616424500942230
322 |
323 | <_>
324 | 7
325 | -0.8243625760078430
326 |
327 |
328 | <_>
329 |
330 | 0 -1 28 -901591776 -201916417 -262 -67371009 -143312112
331 | -524289 -41943178 -1
332 |
333 | -0.4972776770591736 0.6027074456214905
334 |
335 | <_>
336 |
337 | 0 -1 112 -4507851 -411340929 -268437513 -67502145 -17350859
338 | -32901 -71344315 -29377
339 |
340 | -0.4383158981800079 0.5966237187385559
341 |
342 | <_>
343 |
344 | 0 -1 69 -75894785 -117379438 -239063587 -12538500 1485072126
345 | 2076233213 2123118847 801906927
346 |
347 | -0.6386105418205261 0.3977999985218048
348 |
349 | <_>
350 |
351 | 0 -1 19 -823480413 786628589 -16876049 -1364262914 242165211
352 | 1315930109 -696268833 -455082829
353 |
354 | -0.5512794256210327 0.4282079637050629
355 |
356 | <_>
357 |
358 | 0 -1 73 -521411968 6746762 -1396236286 -2038436114
359 | -185612509 57669627 -143132877 -1041235973
360 |
361 | -0.6418755054473877 0.3549866080284119
362 |
363 | <_>
364 |
365 | 0 -1 126 -478153869 1076028979 -1645895615 1365298272
366 | -557859073 -339771473 1442574528 -1058802061
367 |
368 | -0.4841901361942291 0.4668019413948059
369 |
370 | <_>
371 |
372 | 0 -1 45 -246350404 -1650402048 -1610612745 -788400696
373 | 1467604861 -2787397 1476263935 -4481349
374 |
375 | -0.5855734348297119 0.3879135847091675
376 |
377 | <_>
378 | 7
379 | -1.2237116098403931
380 |
381 |
382 | <_>
383 |
384 | 0 -1 114 -24819 1572863935 -16809993 -67108865 2146778388
385 | 1433927541 -268608444 -34865205
386 |
387 | -0.2518476545810700 0.7088654041290283
388 |
389 | <_>
390 |
391 | 0 -1 97 -1841359 -134271049 -32769 -5767369 -1116675 -2185
392 | -8231 -33603327
393 |
394 | -0.4303432404994965 0.5283288359642029
395 |
396 | <_>
397 |
398 | 0 -1 25 -1359507589 -1360593090 -1073778729 -269553812
399 | -809512977 1744707583 -41959433 -134758978
400 |
401 | -0.4259553551673889 0.5440809130668640
402 |
403 | <_>
404 |
405 | 0 -1 34 729753407 -134270989 -1140907329 -235200777
406 | 658456383 2147467263 -1140900929 -16385
407 |
408 | -0.5605589151382446 0.4220733344554901
409 |
410 | <_>
411 |
412 | 0 -1 134 -310380553 -420675595 -193005472 -353568129
413 | 1205338070 -990380036 887604324 -420544526
414 |
415 | -0.5192656517028809 0.4399855434894562
416 |
417 | <_>
418 |
419 | 0 -1 16 -1427119361 1978920959 -287119734 -487068946
420 | 114759245 -540578051 -707510259 -671660453
421 |
422 | -0.5013077259063721 0.4570254683494568
423 |
424 | <_>
425 |
426 | 0 -1 74 -738463762 -889949281 -328301948 -121832450
427 | -1142658284 -1863576559 2146417353 -263185
428 |
429 | -0.4631414115428925 0.4790246188640595
430 |
431 | <_>
432 | 7
433 | -0.5544230937957764
434 |
435 |
436 | <_>
437 |
438 | 0 -1 113 -76228780 -65538 -1 -67174401 -148007 -33 -221796
439 | -272842924
440 |
441 | -0.3949716091156006 0.6082032322883606
442 |
443 | <_>
444 |
445 | 0 -1 110 369147696 -1625232112 2138570036 -1189900 790708019
446 | -1212613127 799948719 -4456483
447 |
448 | -0.4855885505676270 0.4785369932651520
449 |
450 | <_>
451 |
452 | 0 -1 37 784215839 -290015241 536832799 -402984963
453 | -1342414991 -838864897 -176769 -268456129
454 |
455 | -0.4620285332202911 0.4989669024944305
456 |
457 | <_>
458 |
459 | 0 -1 41 -486418688 -171915327 -340294900 -21938 -519766032
460 | -772751172 -73096060 -585322623
461 |
462 | -0.6420643329620361 0.3624351918697357
463 |
464 | <_>
465 |
466 | 0 -1 117 -33554953 -475332625 -1423463824 -2077230421
467 | -4849669 -2080505925 -219032928 -1071915349
468 |
469 | -0.4820112884044647 0.4632140696048737
470 |
471 | <_>
472 |
473 | 0 -1 65 -834130468 -134217476 -1349314083 -1073803559
474 | -619913764 -1449131844 -1386890321 -1979118423
475 |
476 | -0.4465552568435669 0.5061788558959961
477 |
478 | <_>
479 |
480 | 0 -1 56 -285249779 1912569855 -16530 -1731022870 -1161904146
481 | -1342177297 -268439634 -1464078708
482 |
483 | -0.5190586447715759 0.4441480338573456
484 |
485 | <_>
486 | 7
487 | -0.7161560654640198
488 |
489 |
490 | <_>
491 |
492 | 0 -1 20 1246232575 1078001186 -10027057 60102 -277348353
493 | -43646987 -1210581153 1195769615
494 |
495 | -0.4323809444904327 0.5663768053054810
496 |
497 | <_>
498 |
499 | 0 -1 15 -778583572 -612921106 -578775890 -4036478
500 | -1946580497 -1164766570 -1986687009 -12103599
501 |
502 | -0.4588732719421387 0.4547033011913300
503 |
504 | <_>
505 |
506 | 0 -1 129 -1073759445 2013231743 -1363169553 -1082459201
507 | -1414286549 868185983 -1356133589 -1077936257
508 |
509 | -0.5218553543090820 0.4111092388629913
510 |
511 | <_>
512 |
513 | 0 -1 102 -84148365 -2093417722 -1204850272 564290299
514 | -67121221 -1342177350 -1309195902 -776734797
515 |
516 | -0.4920000731945038 0.4326725304126740
517 |
518 | <_>
519 |
520 | 0 -1 88 -25694458 67104495 -290216278 -168563037 2083877442
521 | 1702788383 -144191964 -234882162
522 |
523 | -0.4494568109512329 0.4448510706424713
524 |
525 | <_>
526 |
527 | 0 -1 59 -857980836 904682741 -1612267521 232279415
528 | 1550862252 -574825221 -357380888 -4579409
529 |
530 | -0.5180826783180237 0.3888972699642181
531 |
532 | <_>
533 |
534 | 0 -1 27 -98549440 -137838400 494928389 -246013630 939541351
535 | -1196072350 -620603549 2137216273
536 |
537 | -0.6081240773200989 0.3333222270011902
538 |
539 | <_>
540 | 8
541 | -0.6743940711021423
542 |
543 |
544 | <_>
545 |
546 | 0 -1 29 -150995201 2071191945 -1302151626 536934335
547 | -1059008937 914128709 1147328110 -268369925
548 |
549 | -0.1790193915367127 0.6605972051620483
550 |
551 | <_>
552 |
553 | 0 -1 128 -134509479 1610575703 -1342177289 1861484541
554 | -1107833788 1577058173 -333558568 -136319041
555 |
556 | -0.3681024610996246 0.5139749646186829
557 |
558 | <_>
559 |
560 | 0 -1 70 -1 1060154476 -1090984524 -630918524 -539492875
561 | 779616255 -839568424 -321
562 |
563 | -0.3217232525348663 0.6171553134918213
564 |
565 | <_>
566 |
567 | 0 -1 4 -269562385 -285029906 -791084350 -17923776 235286671
568 | 1275504943 1344390399 -966276889
569 |
570 | -0.4373284578323364 0.4358185231685638
571 |
572 | <_>
573 |
574 | 0 -1 76 17825984 -747628419 595427229 1474759671 575672208
575 | -1684005538 872217086 -1155858277
576 |
577 | -0.4404836893081665 0.4601220190525055
578 |
579 | <_>
580 |
581 | 0 -1 124 -336593039 1873735591 -822231622 -355795238
582 | -470820869 -1997537409 -1057132384 -1015285005
583 |
584 | -0.4294152259826660 0.4452161788940430
585 |
586 | <_>
587 |
588 | 0 -1 54 -834212130 -593694721 -322142257 -364892500
589 | -951029539 -302125121 -1615106053 -79249765
590 |
591 | -0.3973052501678467 0.4854526817798615
592 |
593 | <_>
594 |
595 | 0 -1 95 1342144479 2147431935 -33554561 -47873 -855685912 -1
596 | 1988052447 536827383
597 |
598 | -0.7054683566093445 0.2697997391223908
599 |
600 | <_>
601 | 9
602 | -1.2042298316955566
603 |
604 |
605 | <_>
606 |
607 | 0 -1 39 1431368960 -183437936 -537002499 -137497097
608 | 1560590321 -84611081 -2097193 -513
609 |
610 | -0.5905947685241699 0.5101932883262634
611 |
612 | <_>
613 |
614 | 0 -1 120 -1645259691 2105491231 2130706431 1458995007
615 | -8567536 -42483883 -33780003 -21004417
616 |
617 | -0.4449204802513123 0.4490709304809570
618 |
619 | <_>
620 |
621 | 0 -1 89 -612381022 -505806938 -362027516 -452985106
622 | 275854917 1920431639 -12600561 -134221825
623 |
624 | -0.4693818688392639 0.4061094820499420
625 |
626 | <_>
627 |
628 | 0 -1 14 -805573153 -161 -554172679 -530519488 -16779441
629 | 2000682871 -33604275 -150997129
630 |
631 | -0.3600351214408875 0.5056326985359192
632 |
633 | <_>
634 |
635 | 0 -1 67 6192 435166195 1467449341 2046691505 -1608493775
636 | -4755729 -1083162625 -71365637
637 |
638 | -0.4459891915321350 0.4132415652275085
639 |
640 | <_>
641 |
642 | 0 -1 86 -41689215 -3281034 1853357967 -420712635 -415924289
643 | -270209208 -1088293113 -825311232
644 |
645 | -0.4466069042682648 0.4135067760944367
646 |
647 | <_>
648 |
649 | 0 -1 80 -117391116 -42203396 2080374461 -188709 -542008165
650 | -356831940 -1091125345 -1073796897
651 |
652 | -0.3394956290721893 0.5658645033836365
653 |
654 | <_>
655 |
656 | 0 -1 75 -276830049 1378714472 -1342181951 757272098
657 | 1073740607 -282199241 -415761549 170896931
658 |
659 | -0.5346512198448181 0.3584479391574860
660 |
661 | <_>
662 |
663 | 0 -1 55 -796075825 -123166849 2113667055 -217530421
664 | -1107432194 -16385 -806359809 -391188771
665 |
666 | -0.4379335641860962 0.4123645126819611
667 |
668 | <_>
669 | 10
670 | -0.8402050137519836
671 |
672 |
673 | <_>
674 |
675 | 0 -1 71 -890246622 15525883 -487690486 47116238 -1212319899
676 | -1291847681 -68159890 -469829921
677 |
678 | -0.2670986354351044 0.6014143228530884
679 |
680 | <_>
681 |
682 | 0 -1 31 -1361180685 -1898008841 -1090588811 -285410071
683 | -1074016265 -840443905 2147221487 -262145
684 |
685 | -0.4149844348430634 0.4670888185501099
686 |
687 | <_>
688 |
689 | 0 -1 40 1426190596 1899364271 2142731795 -142607505
690 | -508232452 -21563393 -41960001 -65
691 |
692 | -0.4985891580581665 0.3719584941864014
693 |
694 | <_>
695 |
696 | 0 -1 109 -201337965 10543906 -236498096 -746195597
697 | 1974565825 -15204415 921907633 -190058309
698 |
699 | -0.4568729996681213 0.3965812027454376
700 |
701 | <_>
702 |
703 | 0 -1 130 -595026732 -656401928 -268649235 -571490699
704 | -440600392 -133131 -358810952 -2004088646
705 |
706 | -0.4770836830139160 0.3862601518630981
707 |
708 | <_>
709 |
710 | 0 -1 66 941674740 -1107882114 1332789109 -67691015
711 | -1360463693 -1556612430 -609108546 733546933
712 |
713 | -0.4877715110778809 0.3778986334800720
714 |
715 | <_>
716 |
717 | 0 -1 49 -17114945 -240061474 1552871558 -82775604 -932393844
718 | -1308544889 -532635478 -99042357
719 |
720 | -0.3721654713153839 0.4994400143623352
721 |
722 | <_>
723 |
724 | 0 -1 133 -655906006 1405502603 -939205164 1884929228
725 | -498859222 559417357 -1928559445 -286264385
726 |
727 | -0.3934195041656494 0.4769641458988190
728 |
729 | <_>
730 |
731 | 0 -1 0 -335837777 1860677295 -90 -1946186226 931096183
732 | 251612987 2013265917 -671232197
733 |
734 | -0.4323300719261169 0.4342164099216461
735 |
736 | <_>
737 |
738 | 0 -1 103 37769424 -137772680 374692301 2002666345 -536176194
739 | -1644484728 807009019 1069089930
740 |
741 | -0.4993278682231903 0.3665378093719482
742 |
743 | <_>
744 | 9
745 | -1.1974394321441650
746 |
747 |
748 | <_>
749 |
750 | 0 -1 43 -5505 2147462911 2143265466 -4511070 -16450 -257
751 | -201348440 -71333206
752 |
753 | -0.3310225307941437 0.5624626278877258
754 |
755 | <_>
756 |
757 | 0 -1 90 -136842268 -499330741 2015250980 -87107126
758 | -641665744 -788524639 -1147864792 -134892563
759 |
760 | -0.5266560912132263 0.3704403042793274
761 |
762 | <_>
763 |
764 | 0 -1 104 -146800880 -1780368555 2111170033 -140904684
765 | -16777551 -1946681885 -1646463595 -839131947
766 |
767 | -0.4171888828277588 0.4540435671806335
768 |
769 | <_>
770 |
771 | 0 -1 85 -832054034 -981663763 -301990281 -578814081
772 | -932319000 -1997406723 -33555201 -69206017
773 |
774 | -0.4556705355644226 0.3704262077808380
775 |
776 | <_>
777 |
778 | 0 -1 24 -118492417 -1209026825 1119023838 -1334313353
779 | 1112948738 -297319313 1378887291 -139469193
780 |
781 | -0.4182529747486115 0.4267231225967407
782 |
783 | <_>
784 |
785 | 0 -1 78 -1714382628 -2353704 -112094959 -549613092
786 | -1567058760 -1718550464 -342315012 -1074972227
787 |
788 | -0.3625369668006897 0.4684656262397766
789 |
790 | <_>
791 |
792 | 0 -1 5 -85219702 316836394 -33279 1904970288 2117267315
793 | -260901769 -621461759 -88607770
794 |
795 | -0.4742925167083740 0.3689507246017456
796 |
797 | <_>
798 |
799 | 0 -1 11 -294654041 -353603585 -1641159686 -50331921
800 | -2080899877 1145569279 -143132713 -152044037
801 |
802 | -0.3666271567344666 0.4580127298831940
803 |
804 | <_>
805 |
806 | 0 -1 32 1887453658 -638545712 -1877976819 -34320972
807 | -1071067983 -661345416 -583338277 1060190561
808 |
809 | -0.4567637443542481 0.3894708156585693
810 |
811 | <_>
812 | 9
813 | -0.5733128190040588
814 |
815 |
816 | <_>
817 |
818 | 0 -1 122 -994063296 1088745462 -318837116 -319881377
819 | 1102566613 1165490103 -121679694 -134744129
820 |
821 | -0.4055117964744568 0.5487945079803467
822 |
823 | <_>
824 |
825 | 0 -1 68 -285233233 -538992907 1811935199 -369234005 -529
826 | -20593 -20505 -1561401854
827 |
828 | -0.3787897229194641 0.4532003402709961
829 |
830 | <_>
831 |
832 | 0 -1 58 -1335245632 1968917183 1940861695 536816369
833 | -1226071367 -570908176 457026619 1000020667
834 |
835 | -0.4258328974246979 0.4202791750431061
836 |
837 | <_>
838 |
839 | 0 -1 94 -1360318719 -1979797897 -50435249 -18646473
840 | -608879292 -805306691 -269304244 -17840167
841 |
842 | -0.4561023116111755 0.4002747833728790
843 |
844 | <_>
845 |
846 | 0 -1 87 2062765935 -16449 -1275080721 -16406 45764335
847 | -1090552065 -772846337 -570464322
848 |
849 | -0.4314672648906708 0.4086346626281738
850 |
851 | <_>
852 |
853 | 0 -1 127 -536896021 1080817663 -738234288 -965478709
854 | -2082767969 1290855887 1993822934 -990381609
855 |
856 | -0.4174543321132660 0.4249868988990784
857 |
858 | <_>
859 |
860 | 0 -1 3 -818943025 168730891 -293610428 -79249354 669224671
861 | 621166734 1086506807 1473768907
862 |
863 | -0.4321364760398865 0.4090838730335236
864 |
865 | <_>
866 |
867 | 0 -1 79 -68895696 -67107736 -1414315879 -841676168
868 | -619843344 -1180610531 -1081990469 1043203389
869 |
870 | -0.5018386244773865 0.3702533841133118
871 |
872 | <_>
873 |
874 | 0 -1 116 -54002134 -543485719 -2124882422 -1437445858
875 | -115617074 -1195787391 -1096024366 -2140472445
876 |
877 | -0.5037505626678467 0.3564981222152710
878 |
879 | <_>
880 | 9
881 | -0.4892596900463104
882 |
883 |
884 | <_>
885 |
886 | 0 -1 132 -67113211 2003808111 1862135111 846461923 -2752
887 | 2002237273 -273154752 1937223539
888 |
889 | -0.2448196411132813 0.5689709186553955
890 |
891 | <_>
892 |
893 | 0 -1 62 1179423888 -78064940 -611839555 -539167899
894 | -1289358360 -1650810108 -892540499 -1432827684
895 |
896 | -0.4633283913135529 0.3587929606437683
897 |
898 | <_>
899 |
900 | 0 -1 23 -285212705 -78450761 -656212031 -264050110 -27787425
901 | -1334349961 -547662981 -135796924
902 |
903 | -0.3731099069118500 0.4290455579757690
904 |
905 | <_>
906 |
907 | 0 -1 77 341863476 403702016 -550588417 1600194541
908 | -1080690735 951127993 -1388580949 -1153717473
909 |
910 | -0.3658909499645233 0.4556473195552826
911 |
912 | <_>
913 |
914 | 0 -1 22 -586880702 -204831512 -100644596 -39319550
915 | -1191150794 705692513 457203315 -75806957
916 |
917 | -0.5214384198188782 0.3221037387847900
918 |
919 | <_>
920 |
921 | 0 -1 72 -416546870 545911370 -673716192 -775559454
922 | -264113598 139424 -183369982 -204474641
923 |
924 | -0.4289036989212036 0.4004956185817719
925 |
926 | <_>
927 |
928 | 0 -1 50 -1026505020 -589692154 -1740499937 -1563770497
929 | 1348491006 -60710713 -1109853489 -633909413
930 |
931 | -0.4621542394161224 0.3832748532295227
932 |
933 | <_>
934 |
935 | 0 -1 108 -1448872304 -477895040 -1778390608 -772418127
936 | -1789923416 -1612057181 -805306693 -1415842113
937 |
938 | -0.3711548447608948 0.4612701535224915
939 |
940 | <_>
941 |
942 | 0 -1 92 407905424 -582449988 52654751 -1294472 -285103725
943 | -74633006 1871559083 1057955850
944 |
945 | -0.5180652141571045 0.3205870389938355
946 |
947 | <_>
948 | 10
949 | -0.5911940932273865
950 |
951 |
952 | <_>
953 |
954 | 0 -1 81 4112 -1259563825 -846671428 -100902460 1838164148
955 | -74153752 -90653988 -1074263896
956 |
957 | -0.2592592537403107 0.5873016119003296
958 |
959 | <_>
960 |
961 | 0 -1 1 -285216785 -823206977 -1085589 -1081346 1207959293
962 | 1157103471 2097133565 -2097169
963 |
964 | -0.3801195919513702 0.4718827307224274
965 |
966 | <_>
967 |
968 | 0 -1 121 -12465 -536875169 2147478367 2130706303 -37765492
969 | -866124467 -318782328 -1392509185
970 |
971 | -0.3509117066860199 0.5094807147979736
972 |
973 | <_>
974 |
975 | 0 -1 38 2147449663 -20741 -16794757 1945873146 -16710 -1
976 | -8406341 -67663041
977 |
978 | -0.4068757295608521 0.4130136370658875
979 |
980 | <_>
981 |
982 | 0 -1 17 -155191713 866117231 1651407483 548272812 -479201468
983 | -447742449 1354229504 -261884429
984 |
985 | -0.4557141065597534 0.3539792001247406
986 |
987 | <_>
988 |
989 | 0 -1 100 -225319378 -251682065 -492783986 -792341777
990 | -1287261695 1393643841 -11274182 -213909521
991 |
992 | -0.4117803275585175 0.4118592441082001
993 |
994 | <_>
995 |
996 | 0 -1 63 -382220122 -2002072729 -51404800 -371201558
997 | -923011069 -2135301457 -2066104743 -1042557441
998 |
999 | -0.4008397758007050 0.4034757018089294
1000 |
1001 | <_>
1002 |
1003 | 0 -1 101 -627353764 -48295149 1581203952 -436258614
1004 | -105268268 -1435893445 -638126888 -1061107126
1005 |
1006 | -0.5694189667701721 0.2964762747287750
1007 |
1008 | <_>
1009 |
1010 | 0 -1 118 -8399181 1058107691 -621022752 -251003468 -12582915
1011 | -574619739 -994397789 -1648362021
1012 |
1013 | -0.3195341229438782 0.5294018983840942
1014 |
1015 | <_>
1016 |
1017 | 0 -1 92 -348343812 -1078389516 1717960437 364735981
1018 | -1783841602 -4883137 -457572354 -1076950384
1019 |
1020 | -0.3365339040756226 0.5067458748817444
1021 |
1022 | <_>
1023 | 10
1024 | -0.7612916231155396
1025 |
1026 |
1027 | <_>
1028 |
1029 | 0 -1 10 -1976661318 -287957604 -1659497122 -782068 43591089
1030 | -453637880 1435470000 -1077438561
1031 |
1032 | -0.4204545319080353 0.5165745615959168
1033 |
1034 | <_>
1035 |
1036 | 0 -1 131 -67110925 14874979 -142633168 -1338923040
1037 | 2046713291 -2067933195 1473503712 -789579837
1038 |
1039 | -0.3762553930282593 0.4075302779674530
1040 |
1041 | <_>
1042 |
1043 | 0 -1 83 -272814301 -1577073 -1118685 -305156120 -1052289
1044 | -1073813756 -538971154 -355523038
1045 |
1046 | -0.4253497421741486 0.3728055357933044
1047 |
1048 | <_>
1049 |
1050 | 0 -1 135 -2233 -214486242 -538514758 573747007 -159390971
1051 | 1994225489 -973738098 -203424005
1052 |
1053 | -0.3601998090744019 0.4563256204128265
1054 |
1055 | <_>
1056 |
1057 | 0 -1 115 -261031688 -1330369299 -641860609 1029570301
1058 | -1306461192 -1196149518 -1529767778 683139823
1059 |
1060 | -0.4034293889999390 0.4160816967487335
1061 |
1062 | <_>
1063 |
1064 | 0 -1 64 -572993608 -34042628 -417865 -111109 -1433365268
1065 | -19869715 -1920939864 -1279457063
1066 |
1067 | -0.3620899617671967 0.4594142735004425
1068 |
1069 | <_>
1070 |
1071 | 0 -1 36 -626275097 -615256993 1651946018 805366393
1072 | 2016559730 -430780849 -799868165 -16580645
1073 |
1074 | -0.3903816640377045 0.4381459355354309
1075 |
1076 | <_>
1077 |
1078 | 0 -1 93 1354797300 -1090957603 1976418270 -1342502178
1079 | -1851873892 -1194637077 -1153521668 -1108399474
1080 |
1081 | -0.3591445386409760 0.4624078869819641
1082 |
1083 | <_>
1084 |
1085 | 0 -1 91 68157712 1211368313 -304759523 1063017136 798797750
1086 | -275513546 648167355 -1145357350
1087 |
1088 | -0.4297670423984528 0.4023293554782867
1089 |
1090 | <_>
1091 |
1092 | 0 -1 107 -546318240 -1628569602 -163577944 -537002306
1093 | -545456389 -1325465645 -380446736 -1058473386
1094 |
1095 | -0.5727006793022156 0.2995934784412384
1096 |
1097 | <_>
1098 |
1099 | 0 0 3 5
1100 | <_>
1101 |
1102 | 0 0 4 2
1103 | <_>
1104 |
1105 | 0 0 6 3
1106 | <_>
1107 |
1108 | 0 1 2 3
1109 | <_>
1110 |
1111 | 0 1 3 3
1112 | <_>
1113 |
1114 | 0 1 3 7
1115 | <_>
1116 |
1117 | 0 4 3 3
1118 | <_>
1119 |
1120 | 0 11 3 4
1121 | <_>
1122 |
1123 | 0 12 8 4
1124 | <_>
1125 |
1126 | 0 14 4 3
1127 | <_>
1128 |
1129 | 1 0 5 3
1130 | <_>
1131 |
1132 | 1 1 2 2
1133 | <_>
1134 |
1135 | 1 3 3 1
1136 | <_>
1137 |
1138 | 1 7 4 4
1139 | <_>
1140 |
1141 | 1 12 2 2
1142 | <_>
1143 |
1144 | 1 13 4 1
1145 | <_>
1146 |
1147 | 1 14 4 3
1148 | <_>
1149 |
1150 | 1 17 3 2
1151 | <_>
1152 |
1153 | 2 0 2 3
1154 | <_>
1155 |
1156 | 2 1 2 2
1157 | <_>
1158 |
1159 | 2 2 4 6
1160 | <_>
1161 |
1162 | 2 3 4 4
1163 | <_>
1164 |
1165 | 2 7 2 1
1166 | <_>
1167 |
1168 | 2 11 2 3
1169 | <_>
1170 |
1171 | 2 17 3 2
1172 | <_>
1173 |
1174 | 3 0 2 2
1175 | <_>
1176 |
1177 | 3 1 7 3
1178 | <_>
1179 |
1180 | 3 7 2 1
1181 | <_>
1182 |
1183 | 3 7 2 4
1184 | <_>
1185 |
1186 | 3 18 2 2
1187 | <_>
1188 |
1189 | 4 0 2 3
1190 | <_>
1191 |
1192 | 4 3 2 1
1193 | <_>
1194 |
1195 | 4 6 2 1
1196 | <_>
1197 |
1198 | 4 6 2 5
1199 | <_>
1200 |
1201 | 4 7 5 2
1202 | <_>
1203 |
1204 | 4 8 4 3
1205 | <_>
1206 |
1207 | 4 18 2 2
1208 | <_>
1209 |
1210 | 5 0 2 2
1211 | <_>
1212 |
1213 | 5 3 4 4
1214 | <_>
1215 |
1216 | 5 6 2 5
1217 | <_>
1218 |
1219 | 5 9 2 2
1220 | <_>
1221 |
1222 | 5 10 2 2
1223 | <_>
1224 |
1225 | 6 3 4 4
1226 | <_>
1227 |
1228 | 6 4 4 3
1229 | <_>
1230 |
1231 | 6 5 2 3
1232 | <_>
1233 |
1234 | 6 5 2 5
1235 | <_>
1236 |
1237 | 6 5 4 3
1238 | <_>
1239 |
1240 | 6 6 4 2
1241 | <_>
1242 |
1243 | 6 6 4 4
1244 | <_>
1245 |
1246 | 6 18 1 2
1247 | <_>
1248 |
1249 | 6 21 2 1
1250 | <_>
1251 |
1252 | 7 0 3 7
1253 | <_>
1254 |
1255 | 7 4 2 3
1256 | <_>
1257 |
1258 | 7 9 5 1
1259 | <_>
1260 |
1261 | 7 21 2 1
1262 | <_>
1263 |
1264 | 8 0 1 4
1265 | <_>
1266 |
1267 | 8 5 2 2
1268 | <_>
1269 |
1270 | 8 5 3 2
1271 | <_>
1272 |
1273 | 8 17 3 1
1274 | <_>
1275 |
1276 | 8 18 1 2
1277 | <_>
1278 |
1279 | 9 0 5 3
1280 | <_>
1281 |
1282 | 9 2 2 6
1283 | <_>
1284 |
1285 | 9 5 1 1
1286 | <_>
1287 |
1288 | 9 11 1 1
1289 | <_>
1290 |
1291 | 9 16 1 1
1292 | <_>
1293 |
1294 | 9 16 2 1
1295 | <_>
1296 |
1297 | 9 17 1 1
1298 | <_>
1299 |
1300 | 9 18 1 1
1301 | <_>
1302 |
1303 | 10 5 1 2
1304 | <_>
1305 |
1306 | 10 5 3 3
1307 | <_>
1308 |
1309 | 10 7 1 5
1310 | <_>
1311 |
1312 | 10 8 1 1
1313 | <_>
1314 |
1315 | 10 9 1 1
1316 | <_>
1317 |
1318 | 10 10 1 1
1319 | <_>
1320 |
1321 | 10 10 1 2
1322 | <_>
1323 |
1324 | 10 14 3 3
1325 | <_>
1326 |
1327 | 10 15 1 1
1328 | <_>
1329 |
1330 | 10 15 2 1
1331 | <_>
1332 |
1333 | 10 16 1 1
1334 | <_>
1335 |
1336 | 10 16 2 1
1337 | <_>
1338 |
1339 | 10 17 1 1
1340 | <_>
1341 |
1342 | 10 21 1 1
1343 | <_>
1344 |
1345 | 11 3 2 2
1346 | <_>
1347 |
1348 | 11 5 1 2
1349 | <_>
1350 |
1351 | 11 5 3 3
1352 | <_>
1353 |
1354 | 11 5 4 6
1355 | <_>
1356 |
1357 | 11 6 1 1
1358 | <_>
1359 |
1360 | 11 7 2 2
1361 | <_>
1362 |
1363 | 11 8 1 2
1364 | <_>
1365 |
1366 | 11 10 1 1
1367 | <_>
1368 |
1369 | 11 10 1 2
1370 | <_>
1371 |
1372 | 11 15 1 1
1373 | <_>
1374 |
1375 | 11 17 1 1
1376 | <_>
1377 |
1378 | 11 18 1 1
1379 | <_>
1380 |
1381 | 12 0 2 2
1382 | <_>
1383 |
1384 | 12 1 2 5
1385 | <_>
1386 |
1387 | 12 2 4 1
1388 | <_>
1389 |
1390 | 12 3 1 3
1391 | <_>
1392 |
1393 | 12 7 3 4
1394 | <_>
1395 |
1396 | 12 10 3 2
1397 | <_>
1398 |
1399 | 12 11 1 1
1400 | <_>
1401 |
1402 | 12 12 3 2
1403 | <_>
1404 |
1405 | 12 14 4 3
1406 | <_>
1407 |
1408 | 12 17 1 1
1409 | <_>
1410 |
1411 | 12 21 2 1
1412 | <_>
1413 |
1414 | 13 6 2 5
1415 | <_>
1416 |
1417 | 13 7 3 5
1418 | <_>
1419 |
1420 | 13 11 3 2
1421 | <_>
1422 |
1423 | 13 17 2 2
1424 | <_>
1425 |
1426 | 13 17 3 2
1427 | <_>
1428 |
1429 | 13 18 1 2
1430 | <_>
1431 |
1432 | 13 18 2 2
1433 | <_>
1434 |
1435 | 14 0 2 2
1436 | <_>
1437 |
1438 | 14 1 1 3
1439 | <_>
1440 |
1441 | 14 2 3 2
1442 | <_>
1443 |
1444 | 14 7 2 1
1445 | <_>
1446 |
1447 | 14 13 2 1
1448 | <_>
1449 |
1450 | 14 13 3 3
1451 | <_>
1452 |
1453 | 14 17 2 2
1454 | <_>
1455 |
1456 | 15 0 2 2
1457 | <_>
1458 |
1459 | 15 0 2 3
1460 | <_>
1461 |
1462 | 15 4 3 2
1463 | <_>
1464 |
1465 | 15 4 3 6
1466 | <_>
1467 |
1468 | 15 6 3 2
1469 | <_>
1470 |
1471 | 15 11 3 4
1472 | <_>
1473 |
1474 | 15 13 3 2
1475 | <_>
1476 |
1477 | 15 17 2 2
1478 | <_>
1479 |
1480 | 15 17 3 2
1481 | <_>
1482 |
1483 | 16 1 2 3
1484 | <_>
1485 |
1486 | 16 3 2 4
1487 | <_>
1488 |
1489 | 16 6 1 1
1490 | <_>
1491 |
1492 | 16 16 2 2
1493 | <_>
1494 |
1495 | 17 1 2 2
1496 | <_>
1497 |
1498 | 17 1 2 5
1499 | <_>
1500 |
1501 | 17 12 2 2
1502 | <_>
1503 |
1504 | 18 0 2 2
1505 |
1506 |
--------------------------------------------------------------------------------
/res/values-large/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 16dp
5 | 16dp
6 |
7 |
--------------------------------------------------------------------------------
/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 8dp
5 | 16dp
6 |
7 |
--------------------------------------------------------------------------------
/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | OCV T3 Add Native OpenCV
5 | Hello world!
6 | Settings
7 | MainActivity
8 |
9 |
--------------------------------------------------------------------------------
/src/org/opencv/face/MainActivity.java:
--------------------------------------------------------------------------------
1 | package org.opencv.face;
2 |
3 | import java.io.BufferedWriter;
4 | import java.io.File;
5 | import java.io.FileInputStream;
6 | import java.io.FileOutputStream;
7 | import java.io.FileWriter;
8 | import java.io.IOException;
9 | import java.io.InputStream;
10 | import java.io.ObjectInputStream;
11 | import java.io.ObjectOutputStream;
12 | import java.io.OutputStream;
13 | import java.util.HashMap;
14 | import java.util.Map;
15 |
16 | import org.opencv.objdetect.CascadeClassifier;
17 |
18 | import android.app.Activity;
19 | import android.content.Intent;
20 | import android.graphics.Bitmap;
21 | import android.graphics.BitmapFactory;
22 | import android.os.Bundle;
23 | import android.os.Environment;
24 | import android.util.Log;
25 | import android.view.Menu;
26 | import android.view.View;
27 | import android.widget.Button;
28 | import android.widget.ImageView;
29 | import android.widget.TextView;
30 | import android.widget.Toast;
31 |
32 | public class MainActivity extends Activity {
33 |
34 | Button detect_face,add_name,take_picture;
35 | TextView tv ;
36 | TextView detectedName;
37 | private String File_Image_TAG = new String ("image_db");
38 | private String File_Name_TAG = new String ("name_db");
39 | public static Map idToImage;
40 | public static Map idToName;
41 | public static String current_name = new String("temp");
42 | ImageView captured_image ;
43 | public static boolean face_detected ;
44 | public static File working_Dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/opencv");
45 | public CascadeClassifier haar_cascade;
46 | public static int ID;
47 | private String Name_obt;
48 | BufferedWriter bW;
49 | static File fileC;
50 | static {
51 | working_Dir.mkdirs();
52 | fileC = new File(MainActivity.working_Dir,"csv.txt");
53 |
54 | }
55 | public static boolean pictureTaken,recognized;
56 | //Preview preview;
57 | @Override
58 | public void onCreate(Bundle savedInstanceState) {
59 | super.onCreate(savedInstanceState);
60 |
61 | Name_obt = getIntent().getStringExtra("Name");
62 | if(Name_obt != null){
63 | Log.i("Ajay","Detected Name"+Name_obt);
64 | }
65 |
66 | setContentView(R.layout.activity_main);
67 | ButtonListener listener = new ButtonListener();
68 | detect_face = ((Button)findViewById(R.id.detect_face));
69 | detect_face.setOnClickListener(listener);
70 |
71 | take_picture = (Button) findViewById(R.id.take_picture);
72 | take_picture.setOnClickListener(listener);
73 |
74 | //Load from file:
75 | File imagefile = new File(working_Dir,File_Image_TAG);
76 | File nameFile = new File(working_Dir,File_Name_TAG);
77 | if(imagefile.exists()){
78 | try{
79 | FileInputStream f = new FileInputStream(imagefile);
80 | ObjectInputStream s = new ObjectInputStream(f);
81 | idToImage= (Map) s.readObject();
82 | MainActivity.ID = idToImage.size();
83 |
84 | s.close();
85 | Log.i("Ajay","Database Exists");
86 | }catch(Exception e){
87 | e.printStackTrace();
88 | }
89 | }
90 | if(nameFile.exists()){
91 | try{
92 | FileInputStream f = new FileInputStream(nameFile);
93 | ObjectInputStream s = new ObjectInputStream(f);
94 | idToName= (Map) s.readObject();
95 |
96 | s.close();
97 | Log.i("Ajay","Database Exists");
98 | }catch(Exception e){
99 | e.printStackTrace();
100 | }
101 | }
102 |
103 |
104 | add_name = (Button) findViewById(R.id.Add_Name);
105 | add_name.setOnClickListener(listener);
106 |
107 | tv = (TextView) findViewById(R.id.name);
108 | tv.setVisibility(View.GONE);
109 |
110 | detectedName = (TextView) findViewById(R.id.Detected_name);
111 | detectedName.setVisibility(View.GONE);
112 |
113 | captured_image = (ImageView)findViewById(R.id.captured_image);
114 | if(!pictureTaken){
115 | captured_image.setVisibility(View.GONE);
116 | add_name.setVisibility(View.GONE);
117 | detect_face.setVisibility(View.GONE);
118 | take_picture.setVisibility(View.VISIBLE);
119 | }
120 | else{
121 | if(face_detected){
122 | if(!recognized){
123 | detect_face.setVisibility(View.GONE);
124 | add_name.setVisibility(View.VISIBLE);
125 | take_picture.setVisibility(View.GONE);
126 | }
127 | else{
128 | // TODO: Print the hash value for ID obtained.
129 | detectedName.setVisibility(View.VISIBLE);
130 | detectedName.setText(Name_obt!=null?Name_obt:"");
131 | }
132 | }
133 | else
134 | detect_face.setVisibility(View.VISIBLE);
135 | captured_image.setVisibility(View.VISIBLE);
136 |
137 |
138 | // add_name.setVisibility(View.GONE);
139 | take_picture.setVisibility(View.GONE);
140 | Bitmap bmp=null;
141 | File f = new File(working_Dir,current_name +"_det.jpg");
142 | if(f.exists()){
143 | MainActivity.face_detected = true;
144 | bmp = BitmapFactory.decodeFile(working_Dir.getAbsolutePath()+"/"+current_name +"_det.jpg");
145 | }
146 | else{
147 | MainActivity.face_detected = false;
148 | bmp = BitmapFactory.decodeFile(working_Dir.getAbsolutePath()+"/"+current_name +".jpg");
149 | }
150 | captured_image.setImageBitmap(bmp);
151 | }
152 | }
153 |
154 | @Override
155 | public boolean onCreateOptionsMenu(Menu menu) {
156 | getMenuInflater().inflate(R.menu.activity_main, menu);
157 | return true;
158 | }
159 | private class ButtonListener implements View.OnClickListener{
160 | Intent i;
161 | public void onClick(View v) {
162 |
163 | if(v.equals(findViewById(R.id.detect_face))){
164 | new Sample3View(getApplicationContext()).FindFaces(working_Dir.getAbsolutePath()+"/"+current_name, Sample3View.mCascadeFile.getAbsolutePath().toString());
165 | Log.d("Ajay","Image dir:"+working_Dir.getAbsolutePath()+"/"+current_name);
166 | File f = new File(MainActivity.working_Dir,"csv.txt");
167 | int return_id=-1;
168 | if(f.exists() && MainActivity.ID>1)
169 | return_id = new Sample3View(getApplicationContext()).Find(working_Dir.getAbsolutePath()+"/"+current_name, Sample3View.mCascadeFile.getAbsolutePath().toString(),working_Dir.getAbsolutePath()+"/csv.txt");
170 | MainActivity.face_detected = true;
171 | String Name=null;
172 | if(return_id != -1 ){
173 | Name = new String(idToName.get(return_id));
174 | MainActivity.recognized=true;
175 | }
176 | startActivity(getIntent().putExtra("Name", Name));
177 | //TODO : Add Face Detection
178 | }
179 | else if(v.equals(findViewById(R.id.Add_Name))){
180 | tv.setVisibility(View.VISIBLE);
181 | if(tv.getText().toString().equals(""))
182 | return;
183 | String new_name = new String(tv.getText().toString());
184 | // faces.put(current_name, new ArrayList());
185 | if(idToImage == null){
186 | idToImage = new HashMap();
187 | MainActivity.ID=0;
188 | }
189 | if(idToName == null)
190 | idToName = new HashMap();
191 |
192 | idToImage.put(MainActivity.ID, MainActivity.working_Dir+"/"+new_name+".jpg");
193 | idToImage.put(MainActivity.ID, MainActivity.working_Dir+"/"+new_name+"1.jpg");
194 | idToName.put(MainActivity.ID, new_name);
195 |
196 |
197 | File f = new File(MainActivity.working_Dir,MainActivity.current_name+"_det.jpg");
198 | if (!f.exists()) {
199 | try {
200 | f.createNewFile();
201 | } catch (IOException e) {
202 | e.printStackTrace();
203 | }
204 | }
205 |
206 | File f_new = new File(MainActivity.working_Dir,new_name+".jpg");
207 | if (!f_new.exists()) {
208 | try {
209 | f_new.createNewFile();
210 | } catch (IOException e) {
211 | e.printStackTrace();
212 | }
213 | }
214 | Log.i("Ajay",MainActivity.working_Dir+"");
215 | f.renameTo(f_new);
216 | f = new File(MainActivity.working_Dir,new_name+"1.jpg");
217 |
218 | //copy the file content in bytes
219 | try{
220 | InputStream inStream = new FileInputStream(f_new);
221 | OutputStream outStream = new FileOutputStream(f);
222 |
223 | byte[] buffer = new byte[1024];
224 |
225 | int length;
226 |
227 | while ((length = inStream.read(buffer)) > 0){
228 |
229 | outStream.write(buffer, 0, length);
230 |
231 | }
232 | inStream.close();
233 | outStream.close();
234 | }catch(Exception e){
235 | e.printStackTrace();
236 | }
237 |
238 |
239 |
240 |
241 |
242 | try{
243 | File file = new File(MainActivity.working_Dir,File_Image_TAG);
244 | FileOutputStream fo = new FileOutputStream(file);
245 | ObjectOutputStream s = new ObjectOutputStream(fo);
246 | s.writeObject(idToImage);
247 | s.close();
248 | }catch(Exception e){
249 | e.printStackTrace();
250 | }
251 | try{
252 | File file = new File(MainActivity.working_Dir,File_Name_TAG);
253 | FileOutputStream fo = new FileOutputStream(file);
254 | ObjectOutputStream s = new ObjectOutputStream(fo);
255 | s.writeObject(idToName);
256 | s.close();
257 | }catch(Exception e){
258 | e.printStackTrace();
259 | }
260 | try{
261 | try {
262 | bW = new BufferedWriter(new FileWriter(fileC,true));
263 | } catch (IOException e) {
264 | // TODO Auto-generated catch block
265 | e.printStackTrace();
266 | }
267 | bW.append(MainActivity.working_Dir + "/" + new_name + ".jpg" + ";" + MainActivity.ID);
268 | bW.newLine();
269 | bW.append(MainActivity.working_Dir + "/" + new_name + "1.jpg" + ";" + MainActivity.ID);
270 | bW.newLine();
271 | bW.close();
272 | }catch(Exception e){
273 | e.printStackTrace();
274 | }
275 |
276 |
277 | Toast.makeText(getApplicationContext(), "Name Added", Toast.LENGTH_SHORT).show();
278 | MainActivity.ID++;
279 | startActivity(getIntent());
280 | MainActivity.face_detected=false;
281 | MainActivity.pictureTaken=false;
282 | MainActivity.recognized=false;
283 | // Log.i("Ajay","String : " + current_name);
284 | }
285 | else if(v.equals(findViewById(R.id.take_picture))){
286 | i= new Intent(MainActivity.this,Sample3Native.class);
287 | startActivity(i);
288 | }
289 | }
290 | }
291 | }
--------------------------------------------------------------------------------
/src/org/opencv/face/Sample3Native.java:
--------------------------------------------------------------------------------
1 | package org.opencv.face;
2 |
3 | import java.io.File;
4 | import java.io.FileNotFoundException;
5 | import java.io.FileOutputStream;
6 | import java.util.ArrayList;
7 |
8 | import org.opencv.android.BaseLoaderCallback;
9 | import org.opencv.android.LoaderCallbackInterface;
10 | import org.opencv.android.OpenCVLoader;
11 |
12 | import android.app.Activity;
13 | import android.app.AlertDialog;
14 | import android.app.ProgressDialog;
15 | import android.content.DialogInterface;
16 | import android.content.Intent;
17 | import android.graphics.Bitmap;
18 | import android.graphics.Bitmap.CompressFormat;
19 | import android.graphics.BitmapFactory;
20 | import android.hardware.Camera;
21 | import android.hardware.Camera.PictureCallback;
22 | import android.hardware.Camera.ShutterCallback;
23 | import android.os.Bundle;
24 | import android.os.Environment;
25 | import android.util.Log;
26 | import android.view.View;
27 | import android.view.Window;
28 | import android.widget.Button;
29 | import android.widget.FrameLayout;
30 | import android.widget.ImageView;
31 | import android.widget.Toast;
32 |
33 | public class Sample3Native extends Activity {
34 | private static final String TAG = "Sample::Activity";
35 | private Sample3View mView;
36 | Button ok_button,click_button,cancel_button,try_again_button;
37 | ProgressDialog pg;
38 | Bitmap bmp;
39 | int count;
40 | // ArrayList face_db;
41 |
42 | private class ButtonListener implements View.OnClickListener{
43 |
44 | public void onClick(View v) {
45 | if(v.equals(findViewById(R.id.capture_button))){
46 | pg=ProgressDialog.show(Sample3Native.this, null, "Capturing Image..");
47 | pg.show();
48 | mView.mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);
49 | }else if(v.equals(findViewById(R.id.cancel_button))){
50 | finish();
51 | }else if(v.equals(findViewById(R.id.ok_button))){
52 | saveImage();
53 | Toast.makeText(getApplicationContext(), "Saved File", Toast.LENGTH_SHORT).show();
54 | MainActivity.pictureTaken=true;
55 | Intent i = new Intent(Sample3Native.this,MainActivity.class);
56 | startActivity(i);
57 | }else if(v.equals(findViewById(R.id.recapture_button))){
58 | findViewById(R.id.img).setVisibility(View.GONE);
59 | findViewById(R.id.preview).setVisibility(View.VISIBLE);
60 | // mView.mCamera.grab();
61 | ok_button.setVisibility(View.GONE);
62 | cancel_button.setVisibility(View.VISIBLE);
63 | try_again_button.setVisibility(View.GONE);
64 | click_button.setVisibility(View.VISIBLE);
65 | }
66 | }
67 |
68 | }
69 |
70 |
71 |
72 | private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {
73 | @Override
74 | public void onManagerConnected(int status) {
75 | switch (status) {
76 | case LoaderCallbackInterface.SUCCESS:
77 | {
78 | Log.i(TAG, "OpenCV loaded successfully");
79 |
80 | // Load native library after(!) OpenCV initialization
81 | System.loadLibrary("native_sample");
82 |
83 | // Create and set View
84 | mView = new Sample3View(mAppContext);
85 | //setContentView(mView);
86 |
87 | setContentView(R.layout.main);
88 | ((FrameLayout) findViewById(R.id.preview)).addView(mView);
89 | findViewById(R.id.preview).setVisibility(View.VISIBLE);
90 | findViewById(R.id.img).setVisibility(View.GONE);
91 |
92 | ButtonListener listener=new ButtonListener();
93 | click_button=((Button) findViewById(R.id.capture_button));
94 | click_button.setVisibility(View.VISIBLE);
95 | click_button.setOnClickListener(listener);
96 |
97 | try_again_button=((Button) findViewById(R.id.recapture_button));
98 | try_again_button.setVisibility(View.GONE);
99 | try_again_button.setOnClickListener(listener);
100 |
101 | cancel_button=((Button) findViewById(R.id.cancel_button));
102 | cancel_button.setVisibility(View.VISIBLE);
103 | cancel_button.setOnClickListener(listener);
104 |
105 | ok_button=((Button) findViewById(R.id.ok_button));
106 | ok_button.setVisibility(View.GONE);
107 | ok_button.setOnClickListener(listener);
108 |
109 | count=0;
110 | // face_db = MainActivity.faces.get(MainActivity.current_name);
111 |
112 | // Check native OpenCV camera
113 | if( !mView.openCamera() ) {
114 | AlertDialog ad = new AlertDialog.Builder(mAppContext).create();
115 | ad.setCancelable(false); // This blocks the 'BACK' button
116 | ad.setMessage("Fatal error: can't open camera!");
117 | ad.setButton("OK", new DialogInterface.OnClickListener() {
118 | public void onClick(DialogInterface dialog, int which) {
119 | dialog.dismiss();
120 | finish();
121 | }
122 | });
123 | ad.show();
124 | }
125 | } break;
126 | default:
127 | {
128 | super.onManagerConnected(status);
129 | } break;
130 | }
131 | }
132 | };
133 |
134 | public Sample3Native() {
135 | Log.i(TAG, "Instantiated new " + this.getClass());
136 | }
137 |
138 | @Override
139 | protected void onPause() {
140 | Log.i(TAG, "onPause");
141 | super.onPause();
142 | if (null != mView)
143 | mView.releaseCamera();
144 | }
145 |
146 | @Override
147 | protected void onResume() {
148 | Log.i(TAG, "onResume");
149 | super.onResume();
150 | if((null != mView) && !mView.openCamera() ) {
151 | AlertDialog ad = new AlertDialog.Builder(this).create();
152 | ad.setCancelable(false); // This blocks the 'BACK' button
153 | ad.setMessage("Fatal error: can't open camera!");
154 | ad.setButton("OK", new DialogInterface.OnClickListener() {
155 | public void onClick(DialogInterface dialog, int which) {
156 | dialog.dismiss();
157 | finish();
158 | }
159 | });
160 | ad.show();
161 | }
162 | }
163 |
164 | /** Called when the activity is first created. */
165 | @Override
166 | public void onCreate(Bundle savedInstanceState) {
167 | Log.i(TAG, "onCreate");
168 | super.onCreate(savedInstanceState);
169 | requestWindowFeature(Window.FEATURE_NO_TITLE);
170 |
171 | if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack))
172 | {
173 | Log.e(TAG, "Cannot connect to OpenCV Manager");
174 | }
175 | }
176 |
177 |
178 |
179 | ShutterCallback shutterCallback = new ShutterCallback() {
180 | public void onShutter() {
181 | //Log.d(TAG, "onShutter'd");
182 | System.out.println("In ShutterCallback");
183 | }
184 | };
185 |
186 | /** Handles data for raw picture */
187 | PictureCallback rawCallback = new PictureCallback() {
188 | public void onPictureTaken(byte[] data, Camera camera) {
189 | if(data!=null){
190 | bmp=BitmapFactory.decodeByteArray(data,0,data.length);
191 | findViewById(R.id.img).setVisibility(View.VISIBLE);
192 | ((ImageView)findViewById(R.id.img)).setImageBitmap(bmp);
193 | findViewById(R.id.preview).setVisibility(View.GONE);
194 | if(pg!=null)
195 | pg.dismiss();
196 | ok_button.setVisibility(View.VISIBLE);
197 | click_button.setVisibility(View.GONE);
198 | try_again_button.setVisibility(View.VISIBLE);
199 | }
200 | }
201 | };
202 |
203 | /** Handles data for jpeg picture */
204 | PictureCallback jpegCallback = new PictureCallback() {
205 | public void onPictureTaken(byte[] data, Camera camera) {
206 | if(data!=null){
207 | bmp=BitmapFactory.decodeByteArray(data,0,data.length);
208 | findViewById(R.id.img).setVisibility(View.VISIBLE);
209 | ((ImageView)findViewById(R.id.img)).setImageBitmap(bmp);
210 | findViewById(R.id.preview).setVisibility(View.GONE);
211 |
212 | if(pg!=null)
213 | pg.dismiss();
214 | ok_button.setVisibility(View.VISIBLE);
215 | click_button.setVisibility(View.GONE);
216 | try_again_button.setVisibility(View.VISIBLE);
217 | }
218 | }
219 | };
220 |
221 | public void saveImage(){
222 | FileOutputStream out;
223 |
224 | try {
225 | File file=new File(MainActivity.working_Dir,MainActivity.current_name +".jpg");
226 | // face_db.add(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+MainActivity.current_name+".jpg");
227 | if(!file.exists()) file.createNewFile();
228 | out = new FileOutputStream(file);
229 | bmp.compress(CompressFormat.JPEG, 90, out);
230 | } catch (FileNotFoundException e) {
231 | e.printStackTrace();
232 | } catch (Exception e) {
233 | e.printStackTrace();
234 | }
235 | }
236 | }
237 |
--------------------------------------------------------------------------------
/src/org/opencv/face/Sample3View.java:
--------------------------------------------------------------------------------
1 | package org.opencv.face;
2 |
3 | import java.io.File;
4 | import java.io.FileNotFoundException;
5 | import java.io.FileOutputStream;
6 | import java.io.InputStream;
7 |
8 | import org.opencv.objdetect.CascadeClassifier;
9 |
10 |
11 | import android.content.Context;
12 | import android.graphics.Bitmap;
13 |
14 | class Sample3View extends SampleViewBase {
15 |
16 | private int mFrameSize;
17 | private Bitmap mBitmap;
18 | private int[] mRGBA;
19 |
20 |
21 | public static File mCascadeFile;
22 |
23 | public Sample3View(Context context){
24 | super(context);
25 | try{
26 | InputStream is = context.getResources().openRawResource(R.raw.haarcascade_frontalface_alt2);
27 | File cascadeDir = context.getDir("cascade", Context.MODE_PRIVATE);
28 | mCascadeFile = new File(MainActivity.working_Dir, "haarcascade_frontalface_alt2.xml");
29 | FileOutputStream os = new FileOutputStream(mCascadeFile);
30 |
31 | byte[] buffer = new byte[4096];
32 | int bytesRead;
33 | while ((bytesRead = is.read(buffer)) != -1) {
34 | os.write(buffer, 0, bytesRead);
35 | }
36 | is.close();
37 | os.close();
38 | }catch(Exception e){
39 | e.printStackTrace();
40 | }
41 |
42 | }
43 |
44 | @Override
45 | protected void onPreviewStarted(int previewWidtd, int previewHeight) {
46 | mFrameSize = previewWidtd * previewHeight;
47 | mRGBA = new int[mFrameSize];
48 | mBitmap = Bitmap.createBitmap(previewWidtd, previewHeight, Bitmap.Config.ARGB_8888);
49 | }
50 |
51 | @Override
52 | protected void onPreviewStopped() {
53 | if(mBitmap != null) {
54 | mBitmap.recycle();
55 | mBitmap = null;
56 | }
57 | mRGBA = null;
58 | }
59 |
60 | @Override
61 | protected Bitmap processFrame(byte[] data) {
62 | int[] rgba = mRGBA;
63 |
64 | FindFeatures(getFrameWidth(), getFrameHeight(), data, rgba);
65 |
66 | Bitmap bmp = mBitmap;
67 | bmp.setPixels(rgba, 0/* offset */, getFrameWidth() /* stride */, 0, 0, getFrameWidth(), getFrameHeight());
68 | return bmp;
69 | }
70 |
71 | public native void FindFeatures(int width, int height, byte yuv[], int[] rgba);
72 | public native void FindFaces(String imageName,String FileName);
73 | public native int Find(String imageName,String FileName,String Csv);
74 | }
75 |
--------------------------------------------------------------------------------
/src/org/opencv/face/SampleViewBase.java:
--------------------------------------------------------------------------------
1 | package org.opencv.face;
2 |
3 | import java.io.IOException;
4 | import java.util.List;
5 |
6 | import android.content.Context;
7 | import android.graphics.Bitmap;
8 | import android.graphics.Canvas;
9 | import android.graphics.ImageFormat;
10 | import android.hardware.Camera;
11 | import android.hardware.Camera.CameraInfo;
12 | import android.hardware.Camera.PreviewCallback;
13 | import android.util.Log;
14 | import android.view.SurfaceHolder;
15 | import android.view.SurfaceView;
16 |
17 | public abstract class SampleViewBase extends SurfaceView implements SurfaceHolder.Callback, Runnable {
18 | private static final String TAG = "Sample::SurfaceView";
19 |
20 | public Camera mCamera;
21 | private SurfaceHolder mHolder;
22 | private int mFrameWidth;
23 | private int mFrameHeight;
24 | private byte[] mFrame;
25 | private boolean mThreadRun;
26 | private byte[] mBuffer;
27 |
28 |
29 | public SampleViewBase(Context context) {
30 | super(context);
31 | mHolder = getHolder();
32 | mHolder.addCallback(this);
33 | Log.i(TAG, "Instantiated new " + this.getClass());
34 | }
35 |
36 | public int getFrameWidth() {
37 | return mFrameWidth;
38 | }
39 |
40 | public int getFrameHeight() {
41 | return mFrameHeight;
42 | }
43 |
44 | public void setPreview() throws IOException {
45 | mCamera.setPreviewDisplay(null);
46 | }
47 |
48 | int getFrontCameraId() {
49 | CameraInfo ci = new CameraInfo();
50 | for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
51 | Camera.getCameraInfo(i, ci);
52 | if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
53 | }
54 | return -1; // No front-facing camera found
55 | }
56 | public boolean openCamera() {
57 | Log.i(TAG, "openCamera");
58 | releaseCamera();
59 | int cam=getFrontCameraId();
60 | Log.i("Ajay",cam+"ID");
61 | // if(cam!=-1)
62 | mCamera = Camera.open();
63 | if(mCamera == null) {
64 | Log.e(TAG, "Can't open camera!");
65 | return false;
66 | }
67 |
68 | mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() {
69 | public void onPreviewFrame(byte[] data, Camera camera) {
70 | synchronized (SampleViewBase.this) {
71 | System.arraycopy(data, 0, mFrame, 0, data.length);
72 | SampleViewBase.this.notify();
73 | }
74 | camera.addCallbackBuffer(mBuffer);
75 | }
76 | });
77 | return true;
78 | }
79 |
80 | public void releaseCamera() {
81 | Log.i(TAG, "releaseCamera");
82 | mThreadRun = false;
83 | synchronized (this) {
84 | if (mCamera != null) {
85 | mCamera.stopPreview();
86 | mCamera.setPreviewCallback(null);
87 | mCamera.release();
88 | mCamera = null;
89 | }
90 | }
91 | onPreviewStopped();
92 | }
93 |
94 | public void setupCamera(int width, int height) {
95 | Log.i(TAG, "setupCamera");
96 | synchronized (this) {
97 | if (mCamera != null) {
98 | Camera.Parameters params = mCamera.getParameters();
99 | List sizes = params.getSupportedPreviewSizes();
100 | mFrameWidth = width;
101 | mFrameHeight = height;
102 |
103 | // selecting optimal camera preview size
104 | {
105 | int minDiff = Integer.MAX_VALUE;
106 | for (Camera.Size size : sizes) {
107 | if (Math.abs(size.height - height) < minDiff) {
108 | mFrameWidth = size.width;
109 | mFrameHeight = size.height;
110 | minDiff = Math.abs(size.height - height);
111 | }
112 | }
113 | }
114 |
115 | params.setPreviewSize(getFrameWidth(), getFrameHeight());
116 |
117 | List FocusModes = params.getSupportedFocusModes();
118 | if (FocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
119 | {
120 | params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
121 | }
122 |
123 | mCamera.setParameters(params);
124 |
125 | /* Now allocate the buffer */
126 | params = mCamera.getParameters();
127 | int size = params.getPreviewSize().width * params.getPreviewSize().height;
128 | size = size * ImageFormat.getBitsPerPixel(params.getPreviewFormat()) / 8 * 2;
129 | mBuffer = new byte[size];
130 | /* The buffer where the current frame will be copied */
131 | mFrame = new byte [size];
132 | mCamera.addCallbackBuffer(mBuffer);
133 |
134 | try {
135 | setPreview();
136 | } catch (IOException e) {
137 | Log.e(TAG, "mCamera.setPreviewDisplay/setPreviewTexture fails: " + e);
138 | }
139 |
140 | /* Notify that the preview is about to be started and deliver preview size */
141 | onPreviewStarted(params.getPreviewSize().width, params.getPreviewSize().height);
142 |
143 | /* Now we can start a preview */
144 | mCamera.startPreview();
145 | }
146 | }
147 | }
148 |
149 | public void surfaceChanged(SurfaceHolder _holder, int format, int width, int height) {
150 | Log.i(TAG, "surfaceChanged");
151 | setupCamera(width, height);
152 | }
153 |
154 | public void surfaceCreated(SurfaceHolder holder) {
155 | Log.i(TAG, "surfaceCreated");
156 | (new Thread(this)).start();
157 | }
158 |
159 | public void surfaceDestroyed(SurfaceHolder holder) {
160 | Log.i(TAG, "surfaceDestroyed");
161 | releaseCamera();
162 | }
163 |
164 |
165 | /* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
166 | protected abstract Bitmap processFrame(byte[] data);
167 |
168 | /**
169 | * This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
170 | * It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
171 | * @param previewWidth - the width of the preview frames that will be delivered via processFrame
172 | * @param previewHeight - the height of the preview frames that will be delivered via processFrame
173 | */
174 | protected abstract void onPreviewStarted(int previewWidtd, int previewHeight);
175 |
176 | /**
177 | * This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
178 | * If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
179 | * Any other resources used during the preview can be released.
180 | */
181 | protected abstract void onPreviewStopped();
182 |
183 | public void run() {
184 | mThreadRun = true;
185 | Log.i(TAG, "Starting processing thread");
186 | while (mThreadRun) {
187 | Bitmap bmp = null;
188 |
189 | synchronized (this) {
190 | try {
191 | this.wait();
192 | bmp = processFrame(mFrame);
193 | } catch (InterruptedException e) {
194 | e.printStackTrace();
195 | }
196 | }
197 |
198 | if (bmp != null) {
199 | Canvas canvas = mHolder.lockCanvas();
200 | if (canvas != null) {
201 | canvas.drawBitmap(bmp, (canvas.getWidth() - getFrameWidth()) / 2, (canvas.getHeight() - getFrameHeight()) / 2, null);
202 | mHolder.unlockCanvasAndPost(canvas);
203 | }
204 | }
205 | }
206 | }
207 | }
--------------------------------------------------------------------------------