在OpenCV中生成随机数矩阵

在OpenCV中生成随机数矩阵,opencv,matrix,random,Opencv,Matrix,Random,我想知道如何生成任意给定大小的随机数矩阵,例如2x4。矩阵应由范围内的有符号整数组成,例如[-500,+500] 我已经阅读了的文档,但我不确定应该如何使用它。 我也提到了这一点,但这并没有为我提供我正在寻找的解决方案 我知道这可能是一个愚蠢的问题,但任何帮助都将不胜感激 如果希望值均匀分布,可以使用 请注意,上限是独占的,因此此示例表示范围[-500,+500)中的数据 如果希望值是正态分布的,可以使用 这适用于多达4个通道的矩阵,例如: Mat3b random_image(100,10

我想知道如何生成任意给定大小的随机数矩阵,例如
2x4
。矩阵应由范围内的有符号整数组成,例如
[-500,+500]

我已经阅读了的文档,但我不确定应该如何使用它。 我也提到了这一点,但这并没有为我提供我正在寻找的解决方案

我知道这可能是一个愚蠢的问题,但任何帮助都将不胜感激

如果希望值均匀分布,可以使用

请注意,上限是独占的,因此此示例表示范围
[-500,+500)
中的数据


如果希望值是正态分布的,可以使用


这适用于多达4个通道的矩阵,例如:

Mat3b random_image(100,100);
randu(random_image, Scalar(0,0,0), Scalar(256,256,256));

谢谢@Miki。但是Mat1d是什么?它是一个
typedef
,用于
Mat\uu
。它比
CV\u 64FC1
类型的
Mat
更容易使用。上面的代码也适用于
Mat
Mat Mat Mat(2,4,CV\u 64FC1)
谢谢@Miki。我会试试的。所有的解决方案都很好@Miki。谢谢。但我有一个问题。为什么即使我将低和高更改为int,我也会得到双倍的输出?有可能我得到int吗?只需更改矩阵的类型。使用“Mat1i”
Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double mean = 0.0;
double stddev = 500.0 / 3.0; // 99.7% of values will be inside [-500, +500] interval
randn(mat, Scalar(mean), Scalar(stddev));
Mat3b random_image(100,100);
randu(random_image, Scalar(0,0,0), Scalar(256,256,256));