2012-08-16 57 views
0

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

回答

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;