【问题标题】:OpenCV CascadeClassifier errorOpenCV CascadeClassifier 错误
【发布时间】:2013-05-03 05:18:11
【问题描述】:

我正在尝试通过网络摄像头进行人脸检测,但出现错误,级联分类器错误。

经过测试,发现这行代码报错

CascadeClassifier face_cascade = new CascadeClassifier();

我得到的错误是

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0()J
    at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Native Method)
    at org.opencv.objdetect.CascadeClassifier.<init>(CascadeClassifier.java:38)
    at CamCapture.main(CamCapture.java:24)

有人知道怎么解决吗?


【问题讨论】:

  • 你可以把答案当作一个真实的答案并接受它,我相信,这样问题就解决了。

标签: java opencv face-detection


【解决方案1】:

终于找到答案了,

我应该在使用级联分类器之前加载库。 所以只要把这段代码

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

在级联分类器之前。

【讨论】:

  • 它对我不起作用...线程“main”中的异常 java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1()J at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1 (本机方法)
【解决方案2】:

尝试在 BaseLoaderCallBack 中初始化 CascadeClassifier 对象。 OpenCV 需要在初始化 CasCadeClassifier 对象之前完全加载。

将其放在 onCreate() 或 onResume() 中:

if (!OpenCVLoader.initDebug())
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, baseCallBack);
else
    baseCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);

将 baseCallBack 定义为:

private BaseLoaderCallback baseCallBack = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        if (status == SUCCESS) {
            try {
                initClassifiers(); // initialise here
            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.d("OpenCVLoad", "OpenCV Loaded");
        } else {
            super.onManagerConnected(status);
        }
    }
};

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2021-11-02
    • 2021-02-26
    • 2020-11-27
    • 1970-01-01
    相关资源
    最近更新 更多