python - 如何通过opencv生成RGB直方图

标签 python c++ opencv

我想在 RGB 颜色空间中从图像提取特征到 3D 直方图。我有以下 python 代码,我想在 C++ 下执行它:

hist = cv2.calcHist([image], [0, 1, 2], None, self.bins, [0, 256, 0, 256, 0, 256])        
hist = cv2.normalize(hist)
return hist.flatten()

我做了这样的事情:

float range[] = { 0, 255 } ;   
const float* histRange = { range };
int channels[] = {0};
cv::calcHist( &image, 1, channels, cv::Mat(), r_hist, 1, &sizeVector[0], &histRange);
channels[0] = 1;
cv::calcHist( &image, 1, channels, cv::Mat(), g_hist, 1, &sizeVector[0], &histRange);
channels[0] = 2;
cv::calcHist( &image, 1, channels, cv::Mat(), b_hist, 1, &sizeVector[0], &histRange);

但后来我发现它们不一样,因为在 python 中直方图是基于 3D 计数的,如何将代码转换为 c++?

最佳答案

这是来自 OpenCv 文档的代码示例:

http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html#code

这里的做法是先拆分三个 channel ,然后计算每个 channel 的直方图。

对于 3D 直方图,请引用这个答案:

How to access 3D Histogram values in C++ using OpenCV?

关于python - 如何通过opencv生成RGB直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721538/

相关文章:

python - 从子类中引用非重写父类(super class)方法的约定是什么?

python - 计算对象列表中有多少对象与属性值的方面相似

c++ - 编译 C++ 代码时出错(无效转换)

c++ - 对某些 opencv 函数的 undefined reference

python - 如何使用 Python 中的调查权重计算 OLS 回归。

python - 是否可以使用 requests 模块从 Reverso Context 获取带有单词翻译的例句?

c++ - 如何在 Windows 上为调用用户获取桌面的绝对路径

C++ 作业编译错误与 if 语句

c++ - CV_RETR_LIST、CV_RETR_TREE、CV_RETR_EXTERNAL 之间的区别?

c++ - OpenCV (C++) - 从已知的 3D 对象和相机位置计算图像的 2D 坐标