fork download
  1. package com.example.achic.merge;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.pm.ActivityInfo;
  6. import android.graphics.Bitmap;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.Message;
  10. import android.support.v7.app.AppCompatActivity;
  11. import android.util.Log;
  12. import android.view.WindowManager;
  13. import android.widget.Toast;
  14.  
  15. import com.example.achic.merge.R;
  16. import com.example.achic.merge.DatabaseHelper;
  17. import com.example.achic.merge.UserInfo;
  18. import com.example.achic.merge.FaceMatcher;
  19.  
  20.  
  21. import org.opencv.android.CameraBridgeViewBase;
  22. import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
  23. import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
  24. import org.opencv.android.Utils;
  25. import org.opencv.core.Core;
  26. import org.opencv.core.Mat;
  27. import org.opencv.core.MatOfRect;
  28. import org.opencv.core.Point;
  29. import org.opencv.core.Rect;
  30. import org.opencv.core.Scalar;
  31. import org.opencv.core.Size;
  32. import org.opencv.imgproc.Imgproc;
  33. import org.opencv.objdetect.CascadeClassifier;
  34.  
  35. import java.io.File;
  36. import java.io.FileOutputStream;
  37. import java.io.IOException;
  38. import java.io.InputStream;
  39. import java.util.List;
  40.  
  41. public class DetectActivity extends AppCompatActivity implements
  42. CvCameraViewListener2 {
  43. private static final Scalar FACE_RECT_COLOR = new Scalar(0, 255, 0, 255);
  44. private UserInfo user;
  45. public final static int FLAG_REGISTER = 1;
  46. public final static int FLAG_VERIFY = 2;
  47. public static final int JAVA_DETECTOR = 0;
  48. public static final int NATIVE_DETECTOR = 1;
  49. private Mat mRgba;
  50. private DetectionBasedTracker mNativeDetector;
  51. private Mat mGray;
  52. private Bitmap shibiebitmap;
  53. private CascadeClassifier mJavaDetector;
  54. private float mRelativeFaceSize = 0.2f;
  55. private int mAbsoluteFaceSize = 0;
  56. private CameraBridgeViewBase mOpenCvCameraView;
  57. List<UserInfo> userList;
  58. private int mDetectorType = JAVA_DETECTOR;
  59. private Bitmap mDetectedFace;
  60. private FaceMatcher matcher;
  61. private Handler mHandler = new Handler() {
  62. @Override
  63. public void handleMessage(Message msg) {
  64. Intent intent;
  65. switch (msg.what) {
  66. case FLAG_REGISTER:
  67. if (mDetectedFace == null) {
  68. mDetectedFace = (Bitmap) msg.obj;
  69. int result = matcher.histogramMatch(mDetectedFace);
  70. if (result == matcher.UNFINISHED) {
  71. mDetectedFace = null;
  72. } else if (result == matcher.NO_MATCHER) {
  73. user.setName("01");
  74.  
  75. DatabaseHelper helper = new DatabaseHelper(DetectActivity.this);
  76. Bitmap bitmap = getIntent().getParcelableExtra("Face");
  77. String path = helper.saveBitmapToLocal(bitmap);
  78. user.setPath(path);
  79. helper.insert(user);
  80. helper.close();
  81. Toast.makeText(DetectActivity.this, "註冊成功", Toast.LENGTH_SHORT).show();
  82. finish();
  83. }
  84. } else {
  85. intent = new Intent();
  86. setResult(RESULT_OK, intent);
  87. finish();
  88. }
  89. break;
  90.  
  91. case FLAG_VERIFY:
  92. if (mDetectedFace == null) {
  93. mDetectedFace = (Bitmap) msg.obj;
  94. int result = matcher.histogramMatch(mDetectedFace);
  95. if (result == matcher.UNFINISHED) {
  96. mDetectedFace = null;
  97. } else if (result == matcher.NO_MATCHER) {
  98. intent = new Intent();
  99. setResult(RESULT_CANCELED, intent);
  100. finish();
  101. } else {
  102. intent = new Intent();
  103. intent.putExtra("USER_ID", result);
  104. setResult(RESULT_OK, intent);
  105. finish();
  106. }
  107. }
  108. break;
  109. default:
  110. break;
  111. }
  112. }
  113. };
  114.  
  115. static {
  116. System.loadLibrary("opencv_java3");
  117. }
  118.  
  119. @Override
  120. public void onCreate(Bundle savedInstanceState) {
  121. super.onCreate(savedInstanceState);
  122. configWindowSetting();
  123. setContentView(R.layout.test);
  124.  
  125. mOpenCvCameraView = (CameraBridgeViewBase)
  126. findViewById(R.id.fd_activity_surface_view);
  127. mOpenCvCameraView.setVisibility(CameraBridgeViewBase.VISIBLE);
  128.  
  129. mOpenCvCameraView.setCameraIndex(CameraBridgeViewBase.CAMERA_ID_FRONT);
  130. mOpenCvCameraView.setCvCameraViewListener(this);
  131.  
  132. init();
  133. DatabaseHelper helper = new DatabaseHelper(DetectActivity.this);
  134. userList = helper.query();
  135. matcher = new FaceMatcher(userList);
  136. helper.close();
  137. }
  138.  
  139.  
  140. private void configWindowSetting() {
  141. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  142. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  143. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  144. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  145. }
  146.  
  147. private void init() {
  148. try {
  149. InputStream is = getResources()
  150. .openRawResource(R.raw.lbpcascade_frontalface);
  151. File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
  152. File cascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml");
  153. FileOutputStream os = new FileOutputStream(cascadeFile);
  154. byte[] buffer = new byte[4096];
  155. int bytesRead;
  156. while ((bytesRead = is.read(buffer)) != -1) {
  157. os.write(buffer, 0, bytesRead);
  158. }
  159. is.close();
  160. os.close();
  161. mJavaDetector = new CascadeClassifier(cascadeFile.getAbsolutePath());
  162. if (mJavaDetector.empty()) {
  163. mJavaDetector = null;
  164. }
  165. cascadeDir.delete();
  166. } catch (IOException e) {
  167. e.printStackTrace();
  168. }
  169. mOpenCvCameraView.enableView();
  170. }
  171.  
  172. @Override
  173. public void onPause() {
  174. super.onPause();
  175. if (mOpenCvCameraView != null)
  176. mOpenCvCameraView.disableView();
  177. }
  178.  
  179. public void onDestroy() {
  180. super.onDestroy();
  181. mOpenCvCameraView.disableView();
  182. }
  183.  
  184. public void onCameraViewStarted(int width, int height) {
  185. mGray = new Mat();
  186. mRgba = new Mat();
  187. }
  188.  
  189. public void onCameraViewStopped() {
  190. mGray.release();
  191. mRgba.release();
  192. }
  193.  
  194. public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
  195. mRgba = inputFrame.rgba();
  196. mGray = inputFrame.gray();
  197. Mat mRgbaT = mRgba.t();
  198. Core.flip(mRgba.t(), mRgbaT, 1);
  199. Core.flip(mGray, mGray, 1);
  200.  
  201. Rect rect = new Rect(
  202. new Point(mGray.width() / 2 - 300, mGray.height() / 2 - 300),
  203. new Size(600, 600));
  204. mGray = new Mat(mGray, rect);
  205.  
  206. if (mAbsoluteFaceSize == 0) {
  207. int height = mGray.rows();
  208. if (Math.round(height * mRelativeFaceSize) > 0) {
  209. mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
  210. }
  211. }
  212. MatOfRect faces = new MatOfRect();
  213. if (mJavaDetector != null) {
  214. mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2,
  215. new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
  216. }
  217. Rect[] facesArray = faces.toArray();
  218. for (int i = 0; i < facesArray.length; i++) {
  219. Point point = new Point(facesArray[i].x + 680, facesArray[i].y + 250);
  220. facesArray[i] = new Rect(point, facesArray[i].size());
  221. if (facesArray[i].height > 400 && facesArray[i].height < 500) {
  222. Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(),
  223. FACE_RECT_COLOR, 3);
  224.  
  225. Mat faceMat = new Mat(mRgba, facesArray[i]);
  226. Imgproc.resize(faceMat, faceMat, new Size(320, 320));
  227. Bitmap bitmap = Bitmap.createBitmap(faceMat.width(),faceMat.height(), Bitmap.Config.ARGB_8888);
  228. Utils.matToBitmap(faceMat, bitmap);
  229. Message message = Message.obtain();
  230. message.what = getIntent().getIntExtra("flag", 0);
  231. message.obj = bitmap;
  232. mHandler.sendMessage(message);
  233. }
  234. }
  235. return mRgba;
  236. }
  237. }
  238.  
  239.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:41: error: class DetectActivity is public, should be declared in a file named DetectActivity.java
public class DetectActivity extends AppCompatActivity implements
       ^
Main.java:3: error: package android.content does not exist
import android.content.Context;
                      ^
Main.java:4: error: package android.content does not exist
import android.content.Intent;
                      ^
Main.java:5: error: package android.content.pm does not exist
import android.content.pm.ActivityInfo;
                         ^
Main.java:6: error: package android.graphics does not exist
import android.graphics.Bitmap;
                       ^
Main.java:7: error: package android.os does not exist
import android.os.Bundle;
                 ^
Main.java:8: error: package android.os does not exist
import android.os.Handler;
                 ^
Main.java:9: error: package android.os does not exist
import android.os.Message;
                 ^
Main.java:10: error: package android.support.v7.app does not exist
import android.support.v7.app.AppCompatActivity;
                             ^
Main.java:11: error: package android.util does not exist
import android.util.Log;
                   ^
Main.java:12: error: package android.view does not exist
import android.view.WindowManager;
                   ^
Main.java:13: error: package android.widget does not exist
import android.widget.Toast;
                     ^
Main.java:15: error: cannot find symbol
import com.example.achic.merge.R;
                              ^
  symbol:   class R
  location: package com.example.achic.merge
Main.java:16: error: cannot find symbol
import com.example.achic.merge.DatabaseHelper;
                              ^
  symbol:   class DatabaseHelper
  location: package com.example.achic.merge
Main.java:17: error: cannot find symbol
import com.example.achic.merge.UserInfo;
                              ^
  symbol:   class UserInfo
  location: package com.example.achic.merge
Main.java:18: error: cannot find symbol
import com.example.achic.merge.FaceMatcher;
                              ^
  symbol:   class FaceMatcher
  location: package com.example.achic.merge
Main.java:21: error: package org.opencv.android does not exist
import org.opencv.android.CameraBridgeViewBase;
                         ^
Main.java:22: error: package org.opencv.android.CameraBridgeViewBase does not exist
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
                                              ^
Main.java:23: error: package org.opencv.android.CameraBridgeViewBase does not exist
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
                                              ^
Main.java:24: error: package org.opencv.android does not exist
import org.opencv.android.Utils;
                         ^
Main.java:25: error: package org.opencv.core does not exist
import org.opencv.core.Core;
                      ^
Main.java:26: error: package org.opencv.core does not exist
import org.opencv.core.Mat;
                      ^
Main.java:27: error: package org.opencv.core does not exist
import org.opencv.core.MatOfRect;
                      ^
Main.java:28: error: package org.opencv.core does not exist
import org.opencv.core.Point;
                      ^
Main.java:29: error: package org.opencv.core does not exist
import org.opencv.core.Rect;
                      ^
Main.java:30: error: package org.opencv.core does not exist
import org.opencv.core.Scalar;
                      ^
Main.java:31: error: package org.opencv.core does not exist
import org.opencv.core.Size;
                      ^
Main.java:32: error: package org.opencv.imgproc does not exist
import org.opencv.imgproc.Imgproc;
                         ^
Main.java:33: error: package org.opencv.objdetect does not exist
import org.opencv.objdetect.CascadeClassifier;
                           ^
Main.java:41: error: cannot find symbol
public class DetectActivity extends AppCompatActivity implements
                                    ^
  symbol: class AppCompatActivity
Main.java:42: error: cannot find symbol
        CvCameraViewListener2 {
        ^
  symbol: class CvCameraViewListener2
Main.java:43: error: cannot find symbol
    private static final Scalar FACE_RECT_COLOR = new Scalar(0, 255, 0, 255);
                         ^
  symbol:   class Scalar
  location: class DetectActivity
Main.java:44: error: cannot find symbol
    private UserInfo user;
            ^
  symbol:   class UserInfo
  location: class DetectActivity
Main.java:49: error: cannot find symbol
    private Mat mRgba;
            ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:50: error: cannot find symbol
    private DetectionBasedTracker mNativeDetector;
            ^
  symbol:   class DetectionBasedTracker
  location: class DetectActivity
Main.java:51: error: cannot find symbol
    private Mat mGray;
            ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:52: error: cannot find symbol
    private Bitmap shibiebitmap;
            ^
  symbol:   class Bitmap
  location: class DetectActivity
Main.java:53: error: cannot find symbol
    private CascadeClassifier mJavaDetector;
            ^
  symbol:   class CascadeClassifier
  location: class DetectActivity
Main.java:56: error: cannot find symbol
    private CameraBridgeViewBase mOpenCvCameraView;
            ^
  symbol:   class CameraBridgeViewBase
  location: class DetectActivity
Main.java:57: error: cannot find symbol
    List<UserInfo> userList;
         ^
  symbol:   class UserInfo
  location: class DetectActivity
Main.java:59: error: cannot find symbol
    private Bitmap mDetectedFace;
            ^
  symbol:   class Bitmap
  location: class DetectActivity
Main.java:60: error: cannot find symbol
    private FaceMatcher matcher;
            ^
  symbol:   class FaceMatcher
  location: class DetectActivity
Main.java:61: error: cannot find symbol
    private Handler mHandler = new Handler() {
            ^
  symbol:   class Handler
  location: class DetectActivity
Main.java:120: error: cannot find symbol
    public void onCreate(Bundle savedInstanceState) {
                         ^
  symbol:   class Bundle
  location: class DetectActivity
Main.java:194: error: cannot find symbol
    public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
                             ^
  symbol:   class CvCameraViewFrame
  location: class DetectActivity
Main.java:194: error: cannot find symbol
    public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
           ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:43: error: cannot find symbol
    private static final Scalar FACE_RECT_COLOR = new Scalar(0, 255, 0, 255);
                                                      ^
  symbol:   class Scalar
  location: class DetectActivity
Main.java:61: error: cannot find symbol
    private Handler mHandler = new Handler() {
                                   ^
  symbol:   class Handler
  location: class DetectActivity
Main.java:119: error: method does not override or implement a method from a supertype
    @Override
    ^
Main.java:121: error: cannot find symbol
        super.onCreate(savedInstanceState);
        ^
  symbol:   variable super
  location: class DetectActivity
Main.java:123: error: package R does not exist
        setContentView(R.layout.test);
                        ^
Main.java:125: error: cannot find symbol
        mOpenCvCameraView = (CameraBridgeViewBase)
                             ^
  symbol:   class CameraBridgeViewBase
  location: class DetectActivity
Main.java:126: error: package R does not exist
                findViewById(R.id.fd_activity_surface_view);
                              ^
Main.java:127: error: cannot find symbol
        mOpenCvCameraView.setVisibility(CameraBridgeViewBase.VISIBLE);
                                        ^
  symbol:   variable CameraBridgeViewBase
  location: class DetectActivity
Main.java:129: error: cannot find symbol
        mOpenCvCameraView.setCameraIndex(CameraBridgeViewBase.CAMERA_ID_FRONT);
                                         ^
  symbol:   variable CameraBridgeViewBase
  location: class DetectActivity
Main.java:133: error: cannot find symbol
        DatabaseHelper helper = new DatabaseHelper(DetectActivity.this);
        ^
  symbol:   class DatabaseHelper
  location: class DetectActivity
Main.java:133: error: cannot find symbol
        DatabaseHelper helper = new DatabaseHelper(DetectActivity.this);
                                    ^
  symbol:   class DatabaseHelper
  location: class DetectActivity
Main.java:135: error: cannot find symbol
        matcher = new FaceMatcher(userList);
                      ^
  symbol:   class FaceMatcher
  location: class DetectActivity
Main.java:141: error: package WindowManager does not exist
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                          ^
Main.java:142: error: package WindowManager does not exist
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
                             ^
Main.java:141: error: cannot find symbol
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        ^
  symbol:   method getWindow()
  location: class DetectActivity
Main.java:143: error: package WindowManager does not exist
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                                          ^
Main.java:143: error: cannot find symbol
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        ^
  symbol:   method getWindow()
  location: class DetectActivity
Main.java:144: error: cannot find symbol
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                                ^
  symbol:   variable ActivityInfo
  location: class DetectActivity
Main.java:150: error: package R does not exist
                    .openRawResource(R.raw.lbpcascade_frontalface);
                                      ^
Main.java:149: error: cannot find symbol
            InputStream is = getResources()
                             ^
  symbol:   method getResources()
  location: class DetectActivity
Main.java:151: error: cannot find symbol
            File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
                                                ^
  symbol:   variable Context
  location: class DetectActivity
Main.java:161: error: cannot find symbol
            mJavaDetector = new CascadeClassifier(cascadeFile.getAbsolutePath());
                                ^
  symbol:   class CascadeClassifier
  location: class DetectActivity
Main.java:172: error: method does not override or implement a method from a supertype
    @Override
    ^
Main.java:174: error: cannot find symbol
        super.onPause();
        ^
  symbol:   variable super
  location: class DetectActivity
Main.java:180: error: cannot find symbol
        super.onDestroy();
        ^
  symbol:   variable super
  location: class DetectActivity
Main.java:185: error: cannot find symbol
        mGray = new Mat();
                    ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:186: error: cannot find symbol
        mRgba = new Mat();
                    ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:197: error: cannot find symbol
        Mat mRgbaT = mRgba.t();
        ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:198: error: cannot find symbol
        Core.flip(mRgba.t(), mRgbaT, 1);
        ^
  symbol:   variable Core
  location: class DetectActivity
Main.java:199: error: cannot find symbol
        Core.flip(mGray, mGray, 1);
        ^
  symbol:   variable Core
  location: class DetectActivity
Main.java:201: error: cannot find symbol
        Rect rect = new Rect(
        ^
  symbol:   class Rect
  location: class DetectActivity
Main.java:201: error: cannot find symbol
        Rect rect = new Rect(
                        ^
  symbol:   class Rect
  location: class DetectActivity
Main.java:202: error: cannot find symbol
                new Point(mGray.width() / 2 - 300, mGray.height() / 2 - 300),
                    ^
  symbol:   class Point
  location: class DetectActivity
Main.java:203: error: cannot find symbol
                new Size(600, 600));
                    ^
  symbol:   class Size
  location: class DetectActivity
Main.java:204: error: cannot find symbol
        mGray = new Mat(mGray, rect);
                    ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:212: error: cannot find symbol
        MatOfRect faces = new MatOfRect();
        ^
  symbol:   class MatOfRect
  location: class DetectActivity
Main.java:212: error: cannot find symbol
        MatOfRect faces = new MatOfRect();
                              ^
  symbol:   class MatOfRect
  location: class DetectActivity
Main.java:215: error: cannot find symbol
                    new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
                        ^
  symbol:   class Size
  location: class DetectActivity
Main.java:215: error: cannot find symbol
                    new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
                                                                        ^
  symbol:   class Size
  location: class DetectActivity
Main.java:217: error: cannot find symbol
        Rect[] facesArray = faces.toArray();
        ^
  symbol:   class Rect
  location: class DetectActivity
Main.java:219: error: cannot find symbol
            Point point = new Point(facesArray[i].x + 680, facesArray[i].y + 250);
            ^
  symbol:   class Point
  location: class DetectActivity
Main.java:219: error: cannot find symbol
            Point point = new Point(facesArray[i].x + 680, facesArray[i].y + 250);
                              ^
  symbol:   class Point
  location: class DetectActivity
Main.java:220: error: cannot find symbol
            facesArray[i] = new Rect(point, facesArray[i].size());
                                ^
  symbol:   class Rect
  location: class DetectActivity
Main.java:222: error: cannot find symbol
                Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(),
                ^
  symbol:   variable Imgproc
  location: class DetectActivity
Main.java:225: error: cannot find symbol
                Mat faceMat = new Mat(mRgba, facesArray[i]);
                ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:225: error: cannot find symbol
                Mat faceMat = new Mat(mRgba, facesArray[i]);
                                  ^
  symbol:   class Mat
  location: class DetectActivity
Main.java:226: error: cannot find symbol
                Imgproc.resize(faceMat, faceMat, new Size(320, 320));
                                                     ^
  symbol:   class Size
  location: class DetectActivity
Main.java:226: error: cannot find symbol
                Imgproc.resize(faceMat, faceMat, new Size(320, 320));
                ^
  symbol:   variable Imgproc
  location: class DetectActivity
Main.java:227: error: cannot find symbol
                Bitmap bitmap = Bitmap.createBitmap(faceMat.width(),faceMat.height(), Bitmap.Config.ARGB_8888);
                ^
  symbol:   class Bitmap
  location: class DetectActivity
Main.java:227: error: package Bitmap does not exist
                Bitmap bitmap = Bitmap.createBitmap(faceMat.width(),faceMat.height(), Bitmap.Config.ARGB_8888);
                                                                                            ^
Main.java:227: error: cannot find symbol
                Bitmap bitmap = Bitmap.createBitmap(faceMat.width(),faceMat.height(), Bitmap.Config.ARGB_8888);
                                ^
  symbol:   variable Bitmap
  location: class DetectActivity
Main.java:228: error: cannot find symbol
                Utils.matToBitmap(faceMat, bitmap);
                ^
  symbol:   variable Utils
  location: class DetectActivity
Main.java:229: error: cannot find symbol
                Message message = Message.obtain();
                ^
  symbol:   class Message
  location: class DetectActivity
Main.java:229: error: cannot find symbol
                Message message = Message.obtain();
                                  ^
  symbol:   variable Message
  location: class DetectActivity
100 errors
stdout
Standard output is empty