public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
System.loadLibrary("detection_based_tracker");
try {
InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.close();
mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath());
if (mJavaDetector.empty()) {
Log.e(TAG, "Failed to load cascade classifier");
mJavaDetector = null;
} else
Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath());
cascadeDir.delete();
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
}
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
public Mat onCameraFrame(CvCameraViewFrame inputFrame)
{
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
if (mAbsoluteFaceSize == 0) {
int height = mGray.rows();
if (Math.round(height * mRelativeFaceSize) > 0) {
mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
}
}
MatOfRect faces = new MatOfRect();
if (mDetectorType == JAVA_DETECTOR){
if (mJavaDetector != null)
mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2,
new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
}
else {
Log.e(TAG, "Detection method is not selected!");
}
Rect[] facesArray = faces.toArray();
for (int i = 0; i < facesArray.length; i++)
{
Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 5);
}
return mRgba;
}
执行此代码进行人脸检测时。我得到了这个,应用程序意外停止。我决定在没有任何选项的情况下进行面部检测。那么有人可以建议我我的代码有什么问题吗?
提前致谢。
日志猫
01-24 09:50:04.605: D/dalvikvm(335): newInstance 失败: p0 i0 [0 a1
01-24 09:50:04.605: D/AndroidRuntime(335):关闭虚拟机
01-24 09:50:04.605: W/dalvikvm(335): threadid=1: 线程因未捕获的异常而退出 (group=0x40015560)
01-24 09:50:04.625: E/AndroidRuntime(335): 致命异常:main
01-24 09:50:04.625: E/AndroidRuntime(335): java.lang.RuntimeException: 无法实例化 Activity ComponentInfo{com.example.faces/com.example.faces.MainActivity}: java.lang。 InstantiationException:com.example.faces.MainActivity
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.os.Handler.dispatchMessage(Handler.java:99)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.os.Looper.loop(Looper.java:123)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread.main(ActivityThread.java:3683)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 java.lang.reflect.Method.invokeNative( native 方法)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 java.lang.reflect.Method.invoke(Method.java:507)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-24 09:50:04.625: E/AndroidRuntime(335): at dalvik.system.NativeStart.main( native 方法)
01-24 09:50:04.625: E/AndroidRuntime(335): 引起:java.lang.InstantiationException: com.example.faces.MainActivity
01-24 09:50:04.625: E/AndroidRuntime(335): 在 java.lang.Class.newInstanceImpl( native 方法)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 java.lang.Class.newInstance(Class.java:1409)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-24 09:50:04.625: E/AndroidRuntime(335): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
01-24 09:50:04.625: E/AndroidRuntime(335): ... 11 更多
最佳答案
Caused by: java.lang.InstantiationException: com.example.faces.MainActivity
确保您的 MainActivity
类可以实例化。造成这种情况的一些常见原因:
该类是
抽象
。有一个显式构造函数,它接受参数。 Activity 实际上不应该需要显式构造函数。如果提供了,则不应带任何参数。
关于java - 应用程序意外停止。强制关闭。该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309915/