将"打开的CV图像"中的"颜色"转换为整数格式

Get Color from Open CV Image into integer format

本文关键字:quot 转换 颜色 格式 中的 整数 CV 图像      更新时间:2023-10-16

我正在尝试制作一个直方图,它由大小为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::向量的方法。

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

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

有关详细帮助,请参阅此答案。