2016-06-11 1867 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); 

現在你可以使用雙邊濾波器:)