Android Studio OpenCV Canny检测失败T_T

时间:2017-03-22 12:51:38

标签: android opencv

我使用的是Android Studio 2.3版本

我用Android的Opencv 3.2和我的手机的android版本是4.4.2

这是我的一些源代码。

请注意案例VIEW_MODE_CANNY

@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {

    final int viewMode = mViewMode;
    switch(viewMode){
        case VIEW_MODE_RGBA:
            mRgba = inputFrame.rgba();
            break;
        case VIEW_MODE_GRAY:
            Imgproc.cvtColor(inputFrame.gray(), mRgba, Imgproc.COLOR_GRAY2RGBA, 4);
            break;
        case VIEW_MODE_CANNY:
            try{
                Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY);
                Imgproc.GaussianBlur(mGray, mGray, new Size(5, 5), 2, 2);
                Imgproc.Canny(mGray, mIntermediateMat, 35, 75);
                Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2BGRA, 4);
            }catch(Exception e){
                Log.i(TAG,e.toString());
                e.printStackTrace();
            }
            break;
    }
    return mRgba;
}

我的应用程序显示3个不同的视图。灰色,颜色和Canny

灰色和颜色运行良好。

但如果我选择canny它会自动终止。

没有记录,也没有异常

我甚至无法猜到为什么不

请给我提示..

1 个答案:

答案 0 :(得分:0)

我认为错误就在这一行:

 Imgproc.cvtColor(inputFrame.rgba(), mGray, Imgproc.COLOR_RGBA2GRAY);     

应该是:

REFERENCES

崩溃是因为你给cvtColor提供了一个未初始化的输入图像。

顺便说一句,你的VIEW_MODE有点令人困惑:它不清楚它是指你得到的输入类型,还是你想要生成的输出类型。