OpenCV for Android:将彩色图像转换为灰度时出错

时间:2014-08-07 11:08:36

标签: android opencv

我想将彩色图像转换为灰度图像。为此,我使用openCV的cvtColor()方法,但它给出了以下错误:

OpenCV Error: Assertion failed (scn == 1 && (dcn == 3 || dcn == 4)) in void cv::cvtColor(cv::InputArray, cv::OutputArray, int, int), file /home/reports/ci/slave_desktop/50-SDK/opencv/modules/imgproc/src/color.cpp, line 3789

这是我的代码:

img= Highgui.imread(pathToImage);

    /*Mat convert= new Mat(img.size(), CvType.CV_8UC3);
converted=new Mat(img.size(), CvType.CV_8UC3, new Scalar(255,
        255, 255));*/
    Imgproc.cvtColor(img,img,Imgproc.COLOR_GRAY2RGBA,0); 



    Imgproc.threshold(finalresult, converted, 254, 255, 1 /* THRESH_BINARY_INV */);     

    bitmap1=Bitmap.createBitmap(finalresult.cols(), finalresult.rows(), Bitmap.Config.ARGB_8888);

    System.out.println(""+finalresult);

    Utils.matToBitmap(finalresult, bitmap1);

    canvas = new Canvas(bitmap1);

    iv.setImageBitmap(bitmap1);
    }catch(Exception e)
    {
        System.out.println(e.toString());
    }

1 个答案:

答案 0 :(得分:2)

您使用的是错误的标志。将Imgproc.cvtColor中的第三个参数从Imgproc.COLOR_GRAY2RGBA更改为Imgproc.COLOR_BGRA2GRAY。