【发布时间】:2014-09-30 13:27:22
【问题描述】:
我正在使用 OpenCV 结合 C++ 来获取 BGR 中图像的直方图(使用 calcHist 函数),它是使用 GRAY2BGR 从灰度转换而来的。
这里奇怪的是,直方图似乎计算了所有像素,除了...白色像素(255、255、255)。
可能是什么情况?当然我可以将它转换为 HSV 并查找 S = 0 来检测白色像素(我希望它会起作用,还没有测试过)但是当我已经计算了直方图时为什么我应该这样做?你有什么想法吗?
附言。当谈到代码时,我使用流行的“OpenCV Cookbook”第 4 章中的配方来计算颜色直方图。我用这一行阅读了特定的直方图箱:
int val1 = histo.at<float>(col1.blue(),col1.green(),col1.red());
col1 是 QColor 类型(RGB 所以我按照上面所示的顺序读取值以获得 BGR)。
【问题讨论】:
-
也许它已经在 calcHist 中了,你能添加你在那里使用的值吗?
-
抱歉,我不明白你的意思。你的意思是函数调用?它是:
-
当我输出各种 RGB 值的像素数时,它总是显示 0 表示 (255, 255, 255)。所以我可以很容易地通过简单地从图像中存在的所有像素中减去所有其他值的总和来实现。但我很好奇,为什么会这样?
标签: c++ opencv colors histogram