0

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

使用calcBackProject后,显示它

    cout << backProj.at< double >( i, j );

但它不起作用。

我真的需要大于 255 的确切数字。我以前不想使用normalize。我可以通过calcBackProject 实现吗?

如果我尝试按比例缩小,这个反投影矩阵可以包含十进制吗?因为我不希望 0 存在于这个矩阵中。

谢谢你。

4

1 回答 1

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 );
        }
    }
}
于 2013-02-01T11:26:27.537 回答