我需要使用 calcBackProject,然后显示确切的数字。
for ( int i = 0; i < backProj.rows; ++i )
{
for ( int j = 0; j < backProj.cols; ++j )
{
cout << int(backProj.at< uchar >( i, j )) << " ";
}
cout << endl;
}
但由于"uchar",它的最大值是 255。我尝试使用
Mat backProj( slid_.rows, slid_.cols, CV_64FC1 );
使用计算后,显示它
cout << backProj.at< double >( i, j );
但它不起作用。
我真的需要大于 255 的确切数字。我以前不想使用规范化。我可以通过calcBackProject制作吗?
如果我尝试缩小它,这个反向投影矩阵可以包含十进制吗?因为我不希望这个矩阵中存在 0。
谢谢。
最后,我编写了自己的函数来获取返回投影。希望它能帮助有同样问题的你。
float ReadValueFromHist( const Mat& hist, const int x, const int y ) const
{
int indexAlpha = int( mat.at< Vec4b >( x, y )[ 3 ] ) * bins / 256;
return hist.at< float >( indexAlpha, 0 );
}
void CalcBackProj()
{
backProj = Mat( mat.rows, mat.cols, CV_32FC1);
for ( int i = 0; i < mat.rows; ++i )
{
for ( int j = 0; j < mat.cols; ++j )
{
backProj.at< float >( i, j ) = ReadValueFromHist( hist, i, j );
}
}
}