这是我在程序中使用的代码:
calcHist( &pre_img, 1, channels, Mat(), // do not use mask
hist, 1, histSize, ranges,
true, // the histogram is uniform
false );
Mat histNorm = hist / (pre_img.rows * pre_img.cols);
double entropy = 0.0;
for (int i=0; i<histNorm.rows; i++)
{
float binEntry = histNorm.at<float>(i,0);
if (binEntry != 0.0)
{
entropy -= binEntry * log(binEntry);
}
}
cout<<entropy<<endl;
第一件事是当我输入它时就像entropy -= binEntry * log2(binEntry);
它给我错误一样log2
,我在 VS 2010 中添加了数学和数字库,但仍然收到错误,代码中的第二点是每当我在同一个视频上运行它时在每次执行时给我不同的值,比如如果它10.0 , 2.0 , 0.05
在下次运行程序时给我比相同的帧显示我8.0 , 1.5 , 0.01
these are sample values not exact