C++ 将打开的CV图像中的颜色转换为整数格式
我试图制作一个直方图,它由一个大小为256*256*256的立方体表示,立方体中的每个位置代表一种颜色。因此,从一幅图像中,我想填充一个位置中每种颜色的频率,但我很难将每个像素的BGR向量转换为int,以便访问立方体位置C++ 将打开的CV图像中的颜色转换为整数格式,c++,opencv,C++,Opencv,我试图制作一个直方图,它由一个大小为256*256*256的立方体表示,立方体中的每个位置代表一种颜色。因此,从一幅图像中,我想填充一个位置中每种颜色的频率,但我很难将每个像素的BGR向量转换为int,以便访问立方体位置 typedef std::vector<std::vector<std::vector<int>>> CubeType; typedef cv::Mat MatType; typedef cv::Vec3b ColorType; Histo
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::vector的方法。这是一个包含3个条目的向量。通常BGR(可以是RBG或HSV,但OpenCV默认为图像的BGR)值,因此您可以像引用数组一样引用它们
int b = color[0];
int g = color[1];
int r = color[2];
有关详细帮助,请参阅。一旦您将问题确定为重复问题,请将其标记为重复问题,不要写答案,这会产生相反的效果。
int b = color[0];
int g = color[1];
int r = color[2];