Android for OpenCV - 错误打开跟踪文件,UnsatisfiedLinkError

时间:2012-08-07 19:21:01

标签: android opencv unsatisfiedlinkerror

我是Android开发和OpenCV的新手。我从http://sourceforge.net/projects/opencvlibrary/files/opencv-android/下载了适用于Android的OpenCV库,并使用虚拟设备管理器设置了一部手机。当我尝试在Eclipse中运行“OpenCV Tutorial 0 - Android Camera”时,手机屏幕显示“致命错误:无法打开相机!”我在日志中收到这些错误:

08-07 15:02:57.322: E/Trace(708): error opening trace file: No such file or directory (2)
08-07 15:02:57.772: E/Sample::SurfaceView(708): Can't open camera!

我也尝试过运行一个简单的项目:

package com.example;

import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

    public class Test{
        public static void main(String[] args) {
            Mat example = Highgui.imread("/image.jpg");
        return;
    }
}

给了我错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.highgui.Highgui.imread_1(Ljava/lang/String;)J

如何修复这些错误?另外,/ image.jpg查看项目的父目录,而不是Android虚拟设备上的SD卡,对吧?

非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您正在通过usb在设备上进行开发,请尝试从选项菜单(堆栈行)转到App Manager,向下滚动到OpenCV Manager(假设您使用的是OpenCV 2.4.2或更高版本)并强制关闭它。使用Tutorial 0应用程序执行相同的操作。

我的教程0正在我的ubuntu机器上工作。但是,当我尝试将一些OpenCV类添加到纯Android项目中时,我得到了UnsatisfiedLink错误。在那之后,我的教程0停止工作一段时间,你得到的“找不到相机”错误。似乎OpenCV管理器可能搞砸了,可能在某些资源上有锁或什么东西,需要重新启动。我的建议修复了Totorial 0相机的问题,但不是我的纯android + openCV项目的不满意的链接。

答案 1 :(得分:1)

经过一番搜索后,我找到了this解决了UnsatisfiedLinkError的问题(在我认为修复后再次出现 - 请参阅here):

“3.如果您的应用程序项目没有JNI部分,只需将/ sdk / native / libs /中相应的OpenCV本机库复制到项目目录到文件夹libs /。”

这意味着复制\ armeabi,\ armeabi-v7a和\ x86文件夹。

“4。在您的应用程序中启用OpenCV的最后一步是在调用OpenCV API之前的Java初始化代码。例如,可以在Activity类的静态部分中完成:

static {
    if (!OpenCVLoader.initDebug()) {
        // Handle initialization error
    }
}

此代码段应该在:

之后
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load_image);

现在有效!