android - Android 中的 OpenCV
问题描述
我在 android 中使用 Opencv,我想将图像从画廊加载到 Mat ,请检查我的代码并帮助我做错了什么?
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult( requestCode, resultCode, data );
if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK) {
Uri imageUri = data.getData();
String selectedImagePath = getPath(imageUri);
Mat imgRgba = Imgcodecs.imread( selectedImagePath );
Mat img = new Mat();
imgRgba.copyTo(img);
}
private String getPath(Uri imageUri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query( imageUri, projection, null, null, null );
if(cursor!=null){
int column_index = cursor.getColumnIndexOrThrow( MediaStore.Images.Media.DATA );
cursor.moveToFirst();
return cursor.getString( column_index );
}
return imageUri.getPath();
}
当我运行它时,它会崩溃:
java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String) (tried Java_org_opencv_imgcodecs_Imgcodecs_imread_11 and Java_org_opencv_imgcodecs_Imgcodecs_imread_11__Ljava_lang_String_2)
at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:118)
解决方案
在 Android 上使用之前,您必须初始化 OpenCV 库。
在使用 OpenCV 之前调用下面的代码
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_11, this, baseLoaderCallback);
然后,下面的方法将是回调。
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
推荐阅读
- elasticsearch - Magento\Elasticsearch7\Model\Client\Elasticsearch::query() 的返回值必须是数组类型,Model/Elasticsearch.php:367 中返回的字符串
- reactjs - web3-shh 包将在 1.3.5 版本中被弃用,不再受支持
- github-actions - 减少 GitHub Actions 步骤中的样板文件
- node.js - 无法在 Ubuntu 19.04 中安装 Node.js
- python - Python pytype 安装:无法为 pytype 构建轮子,无法为使用 PEP 517 的 pytype 构建轮子
- visual-studio - 为什么我的VS2008窗口经常刷新甚至卡死?
- python - 在我向另一个模型添加值的同时向 django 模型添加值
- diagnostics - 如何在我的 ECU 中设计诊断处理程序?
- c# - 如何从 C# 中的 GMAP.net 标记获取 X 和 Y 屏幕坐标?
- ios - 从 bit-ly 链接打开 iPhone 应用程序崩溃