我想将彩色图像转换为灰度图像。为此,我使用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());
}
答案 0 :(得分:2)
您使用的是错误的标志。将Imgproc.cvtColor中的第三个参数从Imgproc.COLOR_GRAY2RGBA更改为Imgproc.COLOR_BGRA2GRAY。