gpt4 book ai didi

java - imread 没有从 Linux 读取 Java Android 上的现有图像

转载 作者:行者123 更新时间:2023-12-02 16:12:56 26 4
gpt4 key购买 nike

package com.example.cppinandroid;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import org.opencv.core.Mat;
import java.io.File;
import static org.opencv.imgcodecs.Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE;
import org.opencv.imgcodecs.Imgcodecs;

public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextView tv = findViewById( R.id.sample_text );

Mat image;
image = Imgcodecs.imread( "/home/<myName>/a.png", CV_LOAD_IMAGE_GRAYSCALE);
if ( image.size().height > 0 )
{
tv.setText( "No datfa in image!");
}
else
{
tv.setText( "xxff " + image.size().height);
}
}
}

我没有使用任何可绘制或外部媒体。图像存在于主文件夹中,可以通过提供完全相同的路径由普通的 opencv c++ 程序打开。

Someone here told me that native C++ NDK will not be able to read Linux paths .好吧。这里全是Java。

当我执行它时,它总是进入 else 语句并将高度显示为 0.0

我已经删除了多余的代码。

在 Linux 上这个程序从主文件夹读取普通 png 的方法是什么?

最佳答案

所有 Android 设备或模拟器都无法访问外部存储,例如您的 Linux 存储分区,它们可以访问其内部存储或 SD 卡。在模拟器的情况下,它们的内部存储是使用不易读取的特定格式的文件来模拟的。在启用了开发人员选项的模拟器或设备中,可以使用 adb在 Android SDK 中找到的命令 platform-tools将文件传输到其中的文件夹:

adb push file.jpg /sdcard/file.jpg

之后,您需要更改您在代码中使用的文件的路径以匹配并启用 READ_EXTERNAL_STORAGE 的权限(这里的外部意味着您正在运行的应用程序外部,但仍然在设备内部)。

Someone here told me that native C++ NDK will not be able to read Linux paths. Alright. Here it is all Java.

查看您的问题和答案,首先这是同一个问题,试图访问不属于设备/模拟器内部存储的文件。然而答案并不完全正确,只要授予应用程序权限,C/C++ 代码就可以访问内部存储的文件和目录。我建议您首先尝试使用 Java 解决问题,然后切换回您在其他问题中使用的代码,但路径已更正。使用 Java,您将为 OpenCV API 使用 Java 包装器,因此您需要调用 OpenCVLoader.initDebug()加载包装库。使用纯 NDK 时,您只需加载已编译的库(您使用 native C/C++ 代码创建的 System.loadLibrary(<libname>)

关于java - imread 没有从 Linux 读取 Java Android 上的现有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61725184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com