我是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卡,对吧?
非常感谢。
答案 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);
现在有效!