我正在尝试制作一个由大小为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 ::向量的方法。
答案 0 :(得分:-1)
具有3个条目的向量。通常,BGR(可以是RBG或HSV,但对于图像,OpenCV默认为BGR)值,因此您可以像对数组一样引用它们。
int b = color[0];
int g = color[1];
int r = color[2];
有关详细帮助,请参见this answer。