Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android OpenCV imread标志致命异常,imread在没有标志的情况下工作正常,像素输出与MATLAB不匹配_Java_Android_C++_Matlab_Opencv - Fatal编程技术网

Java Android OpenCV imread标志致命异常,imread在没有标志的情况下工作正常,像素输出与MATLAB不匹配

Java Android OpenCV imread标志致命异常,imread在没有标志的情况下工作正常,像素输出与MATLAB不匹配,java,android,c++,matlab,opencv,Java,Android,C++,Matlab,Opencv,我似乎不明白为什么我的代码不能运行。也就是说,我似乎只能让一些OpenCV函数工作,而且只能部分工作 轻微背景:我将一些MATLAB图像处理代码翻译成Android,我的目标是只使用java opencv选项,避免任何JNI或C++本地代码。 我已经安装了它,并在项目属性中设置了库,还从play store在手机上安装了OpenCV管理器,甚至将本机二进制文件放在项目的libs文件夹中以防万一,我有一句话使它部分工作: private BaseLoaderCallback mLoaderCall

我似乎不明白为什么我的代码不能运行。也就是说,我似乎只能让一些OpenCV函数工作,而且只能部分工作

轻微背景:我将一些MATLAB图像处理代码翻译成Android,我的目标是只使用java opencv选项,避免任何JNI或C++本地代码。 我已经安装了它,并在项目属性中设置了库,还从play store在手机上安装了OpenCV管理器,甚至将本机二进制文件放在项目的libs文件夹中以防万一,我有一句话使它部分工作:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status) {
            case LoaderCallbackInterface.SUCCESS:
            {
                Log.i("Load openCV", "OpenCV loaded successfully");
            } break;
            default:
            {
                super.onManagerConnected(status);
            } break;
        }
    }
};
我正在做一些测试,使用imread在Android OpenCV和MATLAB中查看2000和1000的像素,但是在测试几个像素时,我发现MATLAB和Android之间的RGB值相差约2。例如,我在MATLAB上得到162,在Android上得到160

这个问题可能是由不同的索引转换方法引起的,但我猜这是计算jpg的位深度,并将每个程序的值转换为0-255,从MATLAB到Android OpenCV是不同的

以下是工作正常的原始代码,尽管可能会将我的图像转换为8位:

Mat A;
A = Highgui.imread(photoPath);
double[] testPoint = A.get(2000, 1000);
data1.setText(testPoint[0] + " " + testPoint[1] + " " + testPoint[2] + " ");
然而,当我在加载垫子a上挂上一个标志,以便在原始深度加载时,如下所示:

然后有两个问题,第一个eclipse无法识别IMREAD_ANYDEPTH的库常量,这与import语句一样奇怪:

import org.opencv.highgui.Highgui;
所以我用它的值2填充它,只是为了强制它进行测试。同样,我已经安装并关联了库。第二,在将其设置为2后,我得到一个错误,就像我的logcat输出的引起错误的操作一样,活动终止:

07-13 23:34:54.044: W/Adreno-EGL(14982): <qeglDrvAPI_eglCreateContext:2347>: EGL_BAD_CONFIG
07-13 23:34:54.044: E/OpenCV_for_Tegra(14982): Cannot create OpenGL context
07-13 23:34:54.565: D/AndroidRuntime(14982): Shutting down VM
07-13 23:34:54.565: W/dalvikvm(14982): threadid=1: thread exiting with uncaught exception (group=0x41609ba8)
07-13 23:34:54.565: E/AndroidRuntime(14982): FATAL EXCEPTION: main
07-13 23:34:54.565: E/AndroidRuntime(14982): Process: com.garynfox.pathogenanalyzer, PID: 14982
07-13 23:34:54.565: E/AndroidRuntime(14982): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.garynfox.pathogenanalyzer.OpenCVTest$2.onFileSelected(OpenCVTest.java:109)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserDialog$1.onFileSelected(FileChooserDialog.java:104)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore.notifyListeners(FileChooserCore.java:327)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore.access$3(FileChooserCore.java:274)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore$3.onClick(FileChooserCore.java:218)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.view.FileItem$1.onClick(FileItem.java:219)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.view.View.performClick(View.java:4438)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.view.View$PerformClick.run(View.java:18422)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Handler.handleCallback(Handler.java:733)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Handler.dispatchMessage(Handler.java:95)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Looper.loop(Looper.java:136)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.app.ActivityThread.main(ActivityThread.java:5017)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at java.lang.reflect.Method.invokeNative(Native Method)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at java.lang.reflect.Method.invoke(Method.java:515)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at dalvik.system.NativeStart.main(Native Method)
07-13 23:35:02.614: I/Adreno-EGL(15067): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
07-13 23:35:02.684: D/OpenGLRenderer(15067): Enabling debug mode 0

现在由于某种原因,它在没有旗帜的情况下工作得非常好。为什么会这样?如果需要,我很乐意提供更多信息。同样,我的目标是不惜一切代价避免任何c++/JNI本机代码,因为我真的不知道如何正确使用该工具。我的旗子怎么了?我是否未能正确设置/导入此项?谢谢我需要确保这段代码为MATLAB提供了相同的输出,以用于该项目。

找到了问题的答案。这与索引越界问题有关!我没有调用Highgui.IMREAD\u ANYDEPTH,而是调用了未解析的IMREAD\u ANYDEPTH,因此测试点从未形成,导致数组超出边界错误

试试看,我尝试了,使用Highgui.IMREAD\u ANYDEPTH,变量已解析,但我仍然得到相同的崩溃,不过感谢您的想法!找到了问题的答案。这与索引越界问题有关!我没有调用Highgui.IMREAD\u ANYDEPTH,而是调用了IMREAD\u ANYDEPTH,它没有解析,因此测试点从未形成,导致数组超出边界错误。
07-13 23:34:54.044: W/Adreno-EGL(14982): <qeglDrvAPI_eglCreateContext:2347>: EGL_BAD_CONFIG
07-13 23:34:54.044: E/OpenCV_for_Tegra(14982): Cannot create OpenGL context
07-13 23:34:54.565: D/AndroidRuntime(14982): Shutting down VM
07-13 23:34:54.565: W/dalvikvm(14982): threadid=1: thread exiting with uncaught exception (group=0x41609ba8)
07-13 23:34:54.565: E/AndroidRuntime(14982): FATAL EXCEPTION: main
07-13 23:34:54.565: E/AndroidRuntime(14982): Process: com.garynfox.pathogenanalyzer, PID: 14982
07-13 23:34:54.565: E/AndroidRuntime(14982): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.garynfox.pathogenanalyzer.OpenCVTest$2.onFileSelected(OpenCVTest.java:109)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserDialog$1.onFileSelected(FileChooserDialog.java:104)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore.notifyListeners(FileChooserCore.java:327)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore.access$3(FileChooserCore.java:274)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.FileChooserCore$3.onClick(FileChooserCore.java:218)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at ar.com.daidalos.afiledialog.view.FileItem$1.onClick(FileItem.java:219)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.view.View.performClick(View.java:4438)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.view.View$PerformClick.run(View.java:18422)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Handler.handleCallback(Handler.java:733)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Handler.dispatchMessage(Handler.java:95)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.os.Looper.loop(Looper.java:136)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at android.app.ActivityThread.main(ActivityThread.java:5017)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at java.lang.reflect.Method.invokeNative(Native Method)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at java.lang.reflect.Method.invoke(Method.java:515)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-13 23:34:54.565: E/AndroidRuntime(14982):    at dalvik.system.NativeStart.main(Native Method)
07-13 23:35:02.614: I/Adreno-EGL(15067): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
07-13 23:35:02.684: D/OpenGLRenderer(15067): Enabling debug mode 0