Мне нужно использовать 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;
}
Но его максимальное значение 255 из-за «учар».
Я пытался использовать
Mat backProj( slid_.rows, slid_.cols, CV_64FC1 );
После использования calcBackProject, показать это
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 );
}
}
}
Других решений пока нет …