我正在尝试使用opencv创建直方图。我有一个来自模糊操作的图像(32位),所以我只知道该值在[-0.5; 0.5],但我对起始数据一无所知。
问题是我不了解如何设置参数来计算此类直方图。
我写的代码是:
int numbins=1000;
float range[]={-0.5, 0.5};
float *ranges[]={range};
CvHistogram *hist=cvCreateHist(1, &numbins, CV_HIST_ARRAY, ranges, 1);
cvCalcHist(&img, hist);
img是我要获取直方图的图像。如果我尝试打印直方图,我只会得到一张黑色图片,而如果使用灰度8位图像,则使用相同的功能,我可以获得正确的直方图。
最佳答案
您是否看过calcHist示例?另外,camshiftdemo大量使用直方图。
您是否在显示之前使用normalize标准化了直方图输出(camshiftdemo显示了如何执行此操作)?接近0的值在显示时将显示为黑色,但是在0到255之间进行归一化时将很好地显示。
关于opencv - 具有 double 值的一维直方图opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225818/