2016-06-11 52 views
0

我的代码如下所示:双边过滤错误,声明失败((src.type()== CV_8UC1 || src.type()== CV_8UC3)&& src.data!= dst.data)

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!数据)在无效cv :: bilateralFilter_8u(const cv :: Mat &,cv :: Mat &,int,double,double,int),file/Volumes/Linux/builds/master_pack-android/opencv/modules/imgproc/src/smoo th.cpp,line 3145

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

+0

能否请你告诉我哪里是显示在输出ImgProc.bilateralFiler(),因为我使用的图像仍然显示在哪里看到输出? – arqam

+0

@arqam请参阅此链接:http://answers.opencv.org/question/16993/display-image/ – ProgrammingBaKa

+0

@arqam在我的代码中,图像由OpenCV代码处理,然后,在链接之后,我提到将处理后的mat转换成位图,并将位图设置为在Android应用程序中创建的imageview以输出 – ProgrammingBaKa

回答

0

我得到了同样的问题,并在阅读文档后,我找到了解决方案。你的褥子从位图的读取是没有类型8UC1或8UC3,所以你应该把它转换为8UC3

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

现在你可以使用双边滤波器:)