在pytorch中,我们可以很轻易地生成
import torch
torch.randn(3, 32, 32)
这样就生成了一个(3, 32, 32)的矩阵,而OpenCV也提供了方法进行生成:
#include<iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat a(32, 32, CV_32FC3);
// 实例化一个随机数发生器
RNG rng;
// 使用fill方法
rng.fill(a, RNG::UNIFORM, 0.f, 1.f);
// 输出结果
cout << a << endl;
cout << a.size << endl;
return 0;
}
void fill( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange=false );
InputOutputArray 输入输出矩阵,最多支持4通道,超过4通道先用reshape()改变结构
int distType UNIFORM 或 NORMAL,表示均匀分布和高斯分布
InputArray a disType是UNIFORM,a表示为下界(闭区间);disType是NORMAL,a均值
InputArray b disType是UNIFORM,b表示为上界(开区间);disType是NORMAL,b标准差
bool saturateRange=false
只针对均匀分布有效。当为真的时候,会先把产生随机数的范围变换到数据类型的范围,再产生随机数;
如果为假,会先产生随机数,再进行截断到数据类型的有效区间。请看以下fillM1和fillM2的例子并观察结果