您的位置:首页 > 移动开发 > Android开发

android上使用opencv遇到的一点问题

2015-10-25 22:46 357 查看
http://www.eefocus.com/ssagittis/blog/15-03/310655_2bd1e.html

本想在安卓上使用Opencv4android还蛮容易,不像在qt或vc上那样,直接导个包进去就能解决战斗,但没想到遇了个问题耗掉了我几天的功夫。就是程序一运行就蹦掉了,如图:





  试了网上好多方法,主要就是要加上这两段:

private BaseLoaderCallback mBaseLoaderCallback = new BaseLoaderCallback(this) {

 

@Override

public void onManagerConnected(int status) {

// TODO Auto-generated method stub

switch (status){

case BaseLoaderCallback.SUCCESS:

break;

default:

super.onManagerConnected(status);

break;

}

}

};

 

    @Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, getApplicationContext(), mBaseLoaderCallback);

}

 

不过我加了还是不行,又试了各种,加载库啊,换sdk的位置啥的,最后被一篇博客中的一小段文字给救了  http://blog.csdn.net/yanzi1225627/article/details/16917961

 

以下一段摘自那篇博客:

最重要的一点:app在找OpenCV里的一些包时必须在onResume函数OpenCVLoader.initAsync()之后,否则会找不到库。最初我将procSrc2Gray();放在initUI()之后直接挂掉,后来放到OpenCVLoader.initAsync()依旧不行。除了上面代码里的方法外,还可以用一个延迟,默认等加载完包初始化后,再进行图像处理的操作:

 

好吧,一直以来我为了图方便一直将图像处理部分放在oncreate中,从activity周期来看



 

onresume在oncreate后面,而opencv的初始化在onresume中:

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, getApplicationContext(), mBaseLoaderCallback);

 

我把处理放在button的listener中就ok了,就这么简单,不过这简直让我差点绝望了

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: