0

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

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 卡,对吧?

非常感谢。

4

2 回答 2

1

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

我有教程 0 在我的 ubuntu 机器上工作。但是,当我尝试将一些 OpenCV 类添加到纯 android 项目中时,出现 UnsatisfiedLink 错误。之后,我的教程 0 停止工作一段时间,出现“找不到相机”错误。似乎 OpenCV 管理器可能会搞砸,可能在某些资源上有锁定或其他东西,需要重新启动。我的建议解决了 Totorial 0 相机问题,但没有解决我纯 android + openCV 项目的 unsatisfiedLink 问题。

于 2012-08-08T17:54:47.853 回答
1

经过一堆搜索,我找到UnsatisfiedLinkError 的解决方案(在我认为它已修复后再次出现 - 请参见此处):

“3.如果你的应用项目没有JNI部分,只需将对应的OpenCV原生库从/sdk/native/libs/复制到你的项目目录到文件夹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);

现在它起作用了!

于 2012-08-14T01:35:39.553 回答