遇到的问题
2020/11/13 start
嗯!怎么都解决不了!很气。
最后看到这篇教程Android Studio4.0导入OpenCv4.3.0,(我的android studio是3.5.1的,OpenCv4.4.0,但是不影响,照样好使!这里由衷感谢!!)运行起来简直不要太顺畅!!瞬间解决纠结了一天的问题,太令人开心了叭!
这里和其他教程的区别在于这里是直接加载sdk,其他是选择sdk -> java,至于其他步骤没什么区别。
其他步骤:
- 新建一个jniLibs
- 这里把jni改成jniLibs,并且勾选main,我这里是已经创建了所以没有显示main
去存储在你电脑里的Opencv文件夹
sdk -> native ->libs , all copy
去你当前project文件夹下的
app -> jniLibs , paste
- 查看两个gradle的Version是否一致
app
opencvSdk
- 到这里就导入ok了
- 测试是否成功
还是那位大佬提供的教程里面的测试
就加这两个代码片段
//OpenCV库加载并初始化成功后的回调函数
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
// TODO Auto-generated method stub
switch (status){
case BaseLoaderCallback.SUCCESS:
Log.i(TAG, "成功加载opencv");
Toast toast = Toast.makeText(getApplicationContext(),
"成功加载opencv!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
break;
default:
super.onManagerConnected(status);
Log.i(TAG, "加载失败");
Toast toast1 = Toast.makeText(getApplicationContext(),
"加载失败!", Toast.LENGTH_LONG);
toast1.setGravity(Gravity.CENTER, 0, 0);
toast1.show();
break;
}
}
};
@Override
public void onResume()
{
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
这里发现了一点问题:
用其他复杂的教程时,会弹出提示框:Package not found
需要安装OpenCV Manager!,不安装的话直接退出。
其他:
- 项目测试
使用这个教程灰度图来测试一下是不是真的安装好opencv了吧
(十分感谢!!!!)
private static final String TAG = "MainActivity";
private ImageView iv_image;
private Button bt_test;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_image = findViewById(R.id.iv_image);
bt_test = findViewById(R.id.bt_test);
final Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.aa)).getBitmap();
iv_image.setImageBitmap(bitmap);
bt_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap grayBitmap = toGrayByOpencv(bitmap);
iv_image.setImageBitmap(grayBitmap);
}
});
}
/**
* 灰度化
* @param srcBitmap
* @return
*/
public Bitmap toGrayByOpencv(Bitmap srcBitmap){
Mat mat = new Mat();
Utils.bitmapToMat(srcBitmap,mat);
Mat grayMat = new Mat();
Imgproc.cvtColor(mat, grayMat, Imgproc.COLOR_BGRA2GRAY, 1);
Utils.matToBitmap(grayMat,srcBitmap);
return srcBitmap;
}
终于成功了!
可以开心的探索了!
十分感谢编写教程的人,帮助小白能够入门学习,
以上实践了两位大佬的教程,十分感谢!!
嗯,开心的起始也是悲伤的起始。
又开始了,真的就是那个方法显示是否调试成功,但其实你再添加别的方法之后又开始弹出需要安装manage了!!