如何通过 calcBackProject 获得包含超过 255 或十进制的数字的反向投影矩阵

How can I get Back Projection matrix including numbers over 255 or decimal by calcBackProject?

本文关键字:数字 投影 十进制 calcBackProject 何通过 包含超      更新时间:2023-10-16

我需要使用 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 );
        }
    }
}