带有OpenCV的伯努利矩阵

时间:2012-08-16 00:28:08

标签: c++ opencv matrix

我试图生成伯努利矩阵,其值在-1和1之间。我使用OpenCV' s cv::Mat作为数据结构来保存值。有没有简单的方法来生成这样的矩阵?据我所知,OpenCV没有提供这样做的方法,所以如果需要,我很乐意使用另一个库。

1 个答案:

答案 0 :(得分: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;