双边过滤器错误,断言失败((src.type()== CV_8UC1 || src.type()== CV_8UC3)&& src.data!= dst.data)

时间:2016-06-11 14:25:42

标签: java android opencv

我的代码如下所示:

    Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.image1);
    int width = b.getWidth();
    int height =  b.getHeight();
    Mat tmp = new Mat (width, height, CvType.CV_8UC3);
    Mat tmp2 = tmp.clone();
    Utils.bitmapToMat(b, tmp);
    Imgproc.bilateralFilter(tmp,tmp2,10,50,10);

并提供以下错误,

OpenCV错误:断言失败((src.type()== CV_8UC1 || src.type()== CV_8UC3)&& src.data!= dst.data)void cv :: bilateralFilter_8u(const cv :: Mat&,cv :: Mat&,int,double,double,int),file /Volumes/Linux/builds/master_pack-android/opencv/modules/imgproc/src/smooth.cpp,line 3145

我可以问我的代码有什么问题,非常感谢!!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,经过一些阅读文档后,我找到了解决方案。您从位图读取的Mat没有类型8UC1或8UC3,因此您应该将其转换为8UC3

Imgproc.cvtColor(originalMat,originalMat,Imgproc.COLOR_BGRA2BGR);

现在你可以使用bilateralFilter:)