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 より大きい正確な数値が本当に必要です。以前は正規化を使用したくありません。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 に答える