0

値が -1 から 1 に制限されたベルヌーイ行列を生成しようとしてcv::Matいます。値を保持するためのデータ構造として OpenCV を使用しています。そのような行列を生成する簡単な方法はありますか? 私の知る限り、OpenCV はこれを行う方法を提供していないため、必要に応じて別のライブラリを使用できます。

4

1 に答える 1

1

値を繰り返し処理し、乱数を 1 つずつ割り当てる必要があります。

その方法は次のとおりです。

boost::random::mt19937 rng;         // produces randomness out of thin air
                                // see pseudo-random number generators
boost::random::uniform_int_distribution<> uni01(0,1);

Mat bernoulli; bernoulli.create(rows, cols,CV_32FC1);
MatIterator_<float> it = bernoulli.begin<float>(), it_end = bernoulli.end<float>();
for(;it!=it_end;++it)
  (*it) = uni01(rng) ? 1.0 : -1.0;
于 2012-11-26T22:20:22.777 に答える