Java 确定Mat Opencv的颜色空间

Java 确定Mat Opencv的颜色空间,java,opencv,mat,Java,Opencv,Mat,我正在开发一个程序,在这个程序中,我看到了这些轮廓,我想找到每个特定轮廓的RGB值。我目前面临的问题是,我的垫子是CvTypeCV32\u F。我将图像rtype更改为CV_8UC3。我想知道垫子的颜色空间,这样我就可以把它转换成RGB光谱。我从来没有设置垫子的颜色空间,所以我不知道它是哪一个。所以我得到了转换错误。我试过BGR、GRAY和RGB2BGR(只是想看看它是否已经在那个光谱中,并且会改变)。这是我的密码: private static void findRGBs(List<Ma

我正在开发一个程序,在这个程序中,我看到了这些轮廓,我想找到每个特定轮廓的RGB值。我目前面临的问题是,我的垫子是CvType
CV32\u F
。我将图像
rtype
更改为
CV_8UC3
。我想知道垫子的颜色空间,这样我就可以把它转换成RGB光谱。我从来没有设置垫子的颜色空间,所以我不知道它是哪一个。所以我得到了转换错误。我试过BGR、GRAY和RGB2BGR(只是想看看它是否已经在那个光谱中,并且会改变)。这是我的密码:

private static void findRGBs(List<MatOfPoint> squareContours){
    for(int i = 0; i < squareContours.size(); i++){
        squareContours.get(i).convertTo(squareContours.get(i), CvType.CV_8UC3);
        Imgproc.cvtColor(squareContours.get(i), squareContours.get(i), Imgproc.COLOR_BGR2RGB);
         //not sure what color space this image is 
        getPixelValues(squareContours.get(i));
        foundFrames.add(squareContours.get(i));
    }
}
private static void findRGBs(列表){
对于(int i=0;i
查看mat.channels,它可能是4,您需要BGRA2BGR或RGBA2BGR。Afaik除了手动“跟踪”颜色空间之外,没有其他方法可以确定颜色空间。在PC和C++上,默认情况下图像被加载为8UC3BGR。我猜在Android上默认是8UC4 RGBA或BGRA。它是一个2通道图像,有没有办法让它变成3通道?确定它是什么@米卡迪,你自己抓到的吗?图像/垫子从何而来?每个图像都是垫子,但不是每个垫子都是图像;)@米卡:好的,我想我明白了:)所以我把找到的轮廓画成黑色图像上的白色,然后我在两幅图像中迭代,如果我在黑色图像中遇到白色,我会转到主图像上的相同坐标,并得到它们的值。我相信这就是你所说的。看看mat.Channel,它可能是4,你需要BGRA2BGR或RGBA2BGR。Afaik除了手动“跟踪”颜色空间之外,没有其他方法可以确定颜色空间。在PC和C++上,默认情况下图像被加载为8UC3BGR。我猜在Android上默认是8UC4 RGBA或BGRA。它是一个2通道图像,有没有办法让它变成3通道?确定它是什么@米卡迪,你自己抓到的吗?图像/垫子从何而来?每个图像都是垫子,但不是每个垫子都是图像;)@米卡:好的,我想我明白了:)所以我把找到的轮廓画成黑色图像上的白色,然后我在两幅图像中迭代,如果我在黑色图像中遇到白色,我会转到主图像上的相同坐标,并得到它们的值。我相信你是这么说的