gpt4 book ai didi

android - 使用 opencv4android 和 haarcascade 我的错误是什么

转载 作者:行者123 更新时间:2023-12-02 16:49:47 28 4
gpt4 key购买 nike

我正在尝试创建一个从正面摄像头拍照而不是使用 Viola-Jones 算法对其进行分析的应用程序。有办法吗?

我正在关注这个例子 Face Detection using Haar Cascades (我将此代码传递给 Java)但我的应用程序出现错误。

package br.ufla.violajones;

import org.opencv.objdetect.CascadeClassifier;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {

private CascadeClassifier faceCascade = new CascadeClassifier("haarcascade_frontalface_default.xml");
private CascadeClassifier eyeCascade = new CascadeClassifier("haarcascade_eye.xml");
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

context = getApplicationContext();

ImageView imgView = (ImageView) findViewById(R.id.image);
Bitmap img = BitmapFactory.decodeResource(context.getResources(),R.drawable.lena);

imgView.setImageBitmap(img);
}
}

这是我的错误。我的问题是什么?
05-26 06:16:20.085: W/dalvikvm(12355): No implementation found for native Lorg/opencv/objdetect/CascadeClassifier;.CascadeClassifier_1:(Ljava/lang/String;)J
05-26 06:16:20.090: D/AndroidRuntime(12355): Shutting down VM
05-26 06:16:20.090: W/dalvikvm(12355): threadid=1: thread exiting with uncaught exception (group=0x418ddc80)
05-26 06:16:20.095: E/AndroidRuntime(12355): FATAL EXCEPTION: main
05-26 06:16:20.095: E/AndroidRuntime(12355): Process: br.ufla.violajones, PID: 12355
05-26 06:16:20.095: E/AndroidRuntime(12355): java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1:(Ljava/lang/String;)J
05-26 06:16:20.095: E/AndroidRuntime(12355): at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1(Native Method)
05-26 06:16:20.095: E/AndroidRuntime(12355): at org.opencv.objdetect.CascadeClassifier.<init>(CascadeClassifier.java:58)
05-26 06:16:20.095: E/AndroidRuntime(12355): at br.ufla.violajones.MainActivity.<init>(MainActivity.java:15)
05-26 06:16:20.095: E/AndroidRuntime(12355): at java.lang.Class.newInstanceImpl(Native Method)
05-26 06:16:20.095: E/AndroidRuntime(12355): at java.lang.Class.newInstance(Class.java:1208)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2134)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2277)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.ActivityThread.access$800(ActivityThread.java:145)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.os.Handler.dispatchMessage(Handler.java:102)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.os.Looper.loop(Looper.java:136)
05-26 06:16:20.095: E/AndroidRuntime(12355): at android.app.ActivityThread.main(ActivityThread.java:5088)
05-26 06:16:20.095: E/AndroidRuntime(12355): at java.lang.reflect.Method.invokeNative(Native Method)
05-26 06:16:20.095: E/AndroidRuntime(12355): at java.lang.reflect.Method.invoke(Method.java:515)
05-26 06:16:20.095: E/AndroidRuntime(12355): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781)
05-26 06:16:20.095: E/AndroidRuntime(12355): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-26 06:16:20.095: E/AndroidRuntime(12355): at dalvik.system.NativeStart.main(Native Method)
05-26 06:16:21.935: I/Process(12355): Sending signal. PID: 12355 SIG: 9
05-26 06:17:44.910: D/libEGL(12674): loaded /system/lib/egl/libEGL_mali.so
05-26 06:17:44.915: D/libEGL(12674): loaded /system/lib/egl/libGLESv1_CM_mali.so
05-26 06:17:44.915: D/libEGL(12674): loaded /system/lib/egl/libGLESv2_mali.so
05-26 06:17:44.930: E/(12674): Device driver API match
05-26 06:17:44.930: E/(12674): Device driver API version: 23
05-26 06:17:44.930: E/(12674): User space API version: 23
05-26 06:17:44.930: E/(12674): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct 9 21:05:57 KST 2013
05-26 06:17:44.970: D/OpenGLRenderer(12674): Enabling debug mode 0

最佳答案

在 BaseLoader 完成加载 native 库之前,您不能使用 opencv 代码

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
if (status == LoaderCallbackInterface.SUCCESS ) {

// now we can call opencv code !

} else {
super.onManagerConnected(status);
}
}
};

@Override
public void onResume() {;
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_5,this, mLoaderCallback);
// you may be tempted, to do something here, but it's *async*, and may take some time,
// so any opencv call here will lead to unresolved native errors.
}

要记住的另一件事是,那些 opencv(c++ native) 函数无法从 zip 或 apk 中读取。

您必须将级联文件复制到其他地方,例如 sdcard,然后从那里加载。

关于android - 使用 opencv4android 和 haarcascade 我的错误是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com