将Open CV图像中的颜色转换为整数格式

时间:2018-11-03 14:16:11

标签: c++ opencv

我正在尝试制作一个由大小为256 * 256 * 256的立方体表示的直方图,该立方体中的每个位置都代表一种颜色。因此,从图像中我想填充某个位置每种颜色的频率,但是我很难将每个像素的BGR矢量转换为int以便可以访问多维数据集位置

typedef std::vector<std::vector<std::vector<int>>> CubeType;
typedef cv::Mat MatType;
typedef cv::Vec3b ColorType;

Histogram::Histogram(MatType const& image, int binSize){
    aHist = CubeType(binSize, std::vector<std::vector<int>>(binSize, std::vector<int>(binSize, 0)));
    aBinSize = binSize; // int
    for(int i = 0; i < image.cols; ++i){
        for(int j = 0; j < image.rows; ++j){
            ColorType color = image.at<ColorType>(j, i);
        }
    }
}

我需要一种将cv :: Vec3b转换为三个整数的方法

int b, g, r;

或获取表示整数的不同cv ::向量的方法。

1 个答案:

答案 0 :(得分:-1)

具有3个条目的向量。通常,BGR(可以是RBG或HSV,但对于图像,OpenCV默认为BGR)值,因此您可以像对数组一样引用它们。

int b = color[0];
int g = color[1];
int r = color[2];

有关详细帮助,请参见this answer