我想要做的是写一个函数,计算一个灰度图像的直方图与直方图范围划分的转发数量的分区(anzBin)。然后,我通过图像像素的价值compairing不同的垃圾箱,并在时的值适合在运行,1试图计算我自己的直方图没有opencv calcHist()
vector<int> calcuHisto(const IplImage *src_pic, int anzBin)
{
CvSize size = cvGetSize(src_pic);
int binSize = (size.width/256)*anzBin;
vector<int> histogram(anzBin,0);
for (int y = 0; y<size.height; y++)
{
const uchar *src_pic_point =
(uchar *)(src_pic->imageData + y*src_pic->widthStep);
for (int x = 0; x<size.width; x++)
{
for (int z = 0; z < anzBin; z++)
{
if (src_pic_point[x] <= z*binSize)
{
histogram[src_pic_point[x]]++;
}
}
}
}
return histogram;
}
增加斌的价值,但遗憾的是它不工作... 什么是错的这里? 请帮助
'int binSize =(size.width/256)* anzBin;'因为整数数学,'binSize' 0在这里吗?我的意思是如果size.width小于256不会'binSize'为0? – drescherjm
这不是我想要计算的东西,你是对的。我的目标是这样的:binSize =(图像()/ 256)* anzBin但我该怎么做? – AloisD
替换256与256.0 – drescherjm