OpenCV(android)将未知类型的图像转换为CV_8UC3

OpenCV(android)将未知类型的图像转换为CV_8UC3,android,opencv,Android,Opencv,首先,我不知道用户输入图像的类型。 但我想把它们全部转换成CV_8UC3类型 我使用此功能: Imgproc.cvtColor(img,img,CvType.CV_8UC3); 但它不起作用 我试着这样做: Imgproc.cvtColor(img_edge,img_edge,Imgproc.COLOR_GRAY2RGB); 这是从灰色到RGB,但实际上我不知道输入图像的类型,我只想将它们全部转换为CV_8UC3 这可能吗?您只需编写一个if else子句,没有太多的情况,只有RGB以外的两

首先,我不知道用户输入图像的类型。 但我想把它们全部转换成CV_8UC3类型

我使用此功能:

Imgproc.cvtColor(img,img,CvType.CV_8UC3);
但它不起作用

我试着这样做:

Imgproc.cvtColor(img_edge,img_edge,Imgproc.COLOR_GRAY2RGB);
这是从灰色到RGB,但实际上我不知道输入图像的类型,我只想将它们全部转换为CV_8UC3


这可能吗?

您只需编写一个
if else
子句,没有太多的情况,只有RGB以外的两种格式存在,一种是灰色的,另一种是RGBA。所以你可以这样说:

if (img.channels() == 1) {
    Imgproc.cvtColor(img_edge,img_edge,Imgproc.COLOR_GRAY2BGR);
} else if (img.channels() == 4) {
    Imgproc.cvtColor(img_edge,img_edge,Imgproc.COLOR_BGRA2BGR);
}

是的,图像通常只有这三种风格:灰色、RGB和RGBA