【问题标题】:OpenCV Android crashes on Imgproc.cvtColor()OpenCV Android 在 Imgproc.cvtColor() 上崩溃
【发布时间】:2016-06-08 04:57:29
【问题描述】:

我对 OpenCV4Android 有疑问。

java.lang.RuntimeException:无法启动活动 组件信息{com.example.camtime/com.fognature.develop.smp.CameraActivity}: CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp:3739: 错误:(-215) scn == 3 || scn == 4 在函数 void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2320) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2380) 在 android.app.ActivityThread.access$800(ActivityThread.java:151) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5289) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 引起:CvException [org.opencv.core.CvException: cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/imgproc/src/color.cpp:3739: 错误:(-215) scn == 3 || scn == 4 在函数 void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int) ] 在 org.opencv.imgproc.Imgproc.cvtColor_1(本机方法) 在 org.opencv.imgproc.Imgproc.cvtColor(Imgproc.java:4598) 在 com.fognature.develop.smp.CameraActivity.onCreate(CameraActivity.java:108) 在 android.app.Activity.performCreate(Activity.java:6018) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2273) ... 10 更多

在此代码部分:

Mat sec;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sec = new Mat();
        setContentView(R.layout.activity_camera);
    File photo = new File(Environment.getExternalStorageState()


+File.separator+"SMP"+File.separator+getIntent().getStringExtra("c_name")+File.separator+getIntent().getStringExtra("last_photo"));
                sec = Highgui.imread(photo.getAbsolutePath());
                Imgproc.cvtColor(sec, sec, Imgproc.COLOR_RGBA2GRAY);
        }

它总是在 Imgproc.cvtColor(sec, sec, Imgproc.COLOR_RGBA2GRAY);

上崩溃

【问题讨论】:

    标签: java android opencv


    【解决方案1】:

    错误指出:

    错误:(-215) scn == 3 || scn == 4 在函数 void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int)]

    这通常意味着:

    • 当您尝试转换 RGBA2GRAY 时,在这种情况下输入 Mat sec 只有 1 个通道。您可以在阅读后登录sec.channels() 来确认这一点。
    • 也有可能,输入 Mat 是空的或损坏的,要确认您可以检查 sec.widthsec.heightsec.depth 等属性以确保它已正确加载。

    【讨论】:

    • 是的,Mat的宽高都是0
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多