14
14
using namespace std ;
15
15
using namespace cv ;
16
16
17
- #define AppTag " OCV-FD::Activity"
17
+
18
+ #define LOG_TAG " OCV-Native"
19
+ #define LOGI (...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
20
+ #define LOGE (...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
21
+
22
+
18
23
19
24
extern " C"
20
25
{
21
26
27
+ /*
28
+ inline void vector_Rect_to_Mat(vector<Rect>& v_rect, Mat& mat)
29
+ {
30
+ mat = Mat(v_rect, true);
31
+ }
32
+ */
22
33
23
- void detect (Mat &gray) {
34
+ inline void vector_Rect_to_Mat (std::vector<Rect>& v_rect, Mat& mat)
35
+ {
36
+ mat = Mat (v_rect, true );
37
+ }
24
38
25
- String face_cascade_name = " /sdcard/Download/haarcascade_frontalface_default.xml" ;
26
39
27
- CascadeClassifier face_cascade;
28
- std::vector<Rect> faces;
40
+ CascadeClassifier face_cascade;
29
41
30
- if ( !face_cascade.load ( face_cascade_name ) ){
31
- printf (" --(!)Error loading\n " );
32
- __android_log_print (ANDROID_LOG_DEBUG, AppTag, " Resources NOT found: exiting" );
33
- return ;
34
- }
42
+ vector<Rect> detect (Mat &gray) {
35
43
36
- face_cascade.detectMultiScale (gray,faces,1.1 ,3 ,0 ,Size (20 ,20 ),Size (1000 ,1000 ));
44
+ std::vector<Rect> faces = {};
45
+ face_cascade.detectMultiScale (gray, faces, 1.1 , 3 , 0 , Size (20 , 20 ), Size (1000 , 1000 ));
37
46
38
- for ( size_t i= 0 ; i<faces. size (); i++)
39
- {
40
- rectangle (gray,faces[i],cv::Scalar (255 , 255 , 255 ), 2 , 8 , 0 );
47
+ /*
48
+ for (size_t i = 0; i < faces.size(); i++) {
49
+ rectangle(gray, faces[i], cv::Scalar(255, 255, 255), 2, 8, 0);
41
50
}
51
+ */
52
+ return faces;
42
53
}
43
54
44
55
45
- void JNICALL
46
- Java_ch_hepia_iti_opencvnativeandroidstudio_MainActivity_imgProcess (JNIEnv *env, jclass,
47
- jlong inputAddrMat,
48
- jlong imageAddrGray) {
49
- Mat &mRgb = *(Mat *)inputAddrMat;
50
- Mat &mGray = *(Mat *)imageAddrGray;
51
56
52
- detect (mGray );
57
+ JNIEXPORT void JNICALL
58
+ Java_org_opencv_android_facetracker_HaarDetector_loadResources (
59
+ JNIEnv *env, jobject instance)
60
+ {
61
+ String face_cascade_name = " /sdcard/Download/haarcascade_frontalface_default.xml" ;
62
+
63
+ if (!face_cascade.load (face_cascade_name)) {
64
+ LOGE (" OCV resources NOT loaded" );
65
+ return ;
66
+ } else {
67
+ LOGI (" OCV resources loaded" );
68
+ }
53
69
}
54
70
71
+
72
+ JNIEXPORT void JNICALL
73
+ Java_org_opencv_android_facetracker_HaarDetector_OpenCVdetector (JNIEnv *env, jclass instance,
74
+ jlong inputAddrMat, jlong matRects) {
75
+
76
+ vector<Rect> faces;
77
+
78
+
79
+ Mat &origImg = *((Mat *)inputAddrMat);
80
+ Mat mGray ;
81
+ cv::cvtColor (origImg, mGray , CV_BGR2GRAY);
82
+
83
+ faces = detect (mGray );
84
+ // faces = detect(origImg);
85
+
86
+ vector_Rect_to_Mat (faces, *((Mat*)matRects));
55
87
}
88
+ }
89
+
90
+ // inline void Mat_to_vector_Rect (Mat &mat, vector <Rect> &v_rect);
91
+ // ((Mat*)matRect) = Mat(faces, true);
0 commit comments