gpt4 book ai didi

c++ - OpenCV 直方图不计算来自 GRAY 的 BGR 中的白色像素

转载 作者:行者123 更新时间:2023-11-28 02:43:22 32 4
gpt4 key购买 nike

我使用 OpenCV 结合 C++ 获取 BGR 中图像的直方图(使用 calcHist 函数),它是使用 GRAY2BGR 从灰度转换而来。

这里奇怪的是,直方图似乎计算所有像素,除了...白色像素(255、255、255)。

会是什么情况?当然我可以将它转换成 HSV 并查找 S = 0 来检测白色像素(我希望它能工作,还没有测试过)但是我为什么要这样做我已经计算了直方图?你有什么想法吗?

附言。当谈到代码时,我使用了流行的“OpenCV Cookbook”第 4 章中的方法来计算颜色直方图。我用这一行读取了特定的直方图 bin:

int val1 = histo.at<float>(col1.blue(),col1.green(),col1.red());

其中 col1 是 QColor 类型(RGB 所以我按上面显示的顺序读取值以获得 BGR)。

最佳答案

您是否正确设置了范围?

基于示例:http://docs.opencv.org/modules/imgproc/doc/histograms.html#calchist

cv::Mat bgr(480, 640, CV_8UC3, cv::Scalar(255.0, 255.0, 255.0));

// Quantize the B, G and R channels to 30 levels
int histSize[] = {30, 30, 30};

// B, G and R varies from 0 to 255
float bRanges[] = { 0, 256 };
float gRanges[] = { 0, 256 };
float rRanges[] = { 0, 256 };
const float* ranges[] = { bRanges, gRanges, rRanges };

// we compute the histogram from the 0th and 2nd channels
int channels[] = {0, 1, 2};

cv::MatND hist;
cv::calcHist(&bgr, 1, channels, cv::Mat(), hist, 2, histSize, ranges, true, false);

关于c++ - OpenCV 直方图不计算来自 GRAY 的 BGR 中的白色像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180242/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com