使用BufferedImage时,我可以使用getColorModel和getType确定哪种类型的图像,但是如何在位图上实现呢?
我已经尝试过一次,布尔值总是返回true;
public boolean isGreyscale(Bitmap image)
{
int width = image.getWidth();
int height = image.getHeight();
int pixel,red, green, blue;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
pixel = image.getPixel(i, j);
red = (pixel >> 16) & 0xff;
green = (pixel >> 8) & 0xff;
blue = (pixel) & 0xff;
if (red != green || green != blue ) return false;
}
}
return true;
}
然后我尝试使用OpenCV,但不知道该怎么做,因此我会检查频道并始终返回4个频道(包括Alpha),
public boolean checkIfGrayscale(Bitmap bitmap){
Mat matImages = new Mat();
Utils.bitmapToMat(bitmap, matImages);
matImages.channels();
if(matImages.channels()>1){
return false;
}
return true;
}
因为我认为OpenCV灰度图像是1通道,而rgb是4通道
没有任何效果。当我尝试输入rgb时,返回值仍然为true。我被困了一个星期。