我正在寻找最佳解决方案来生成(在OpenCV中)一个矩阵(2xN)的随机数,其均值为0,方差为1,就像Matlab中的函数randn()一样.
randn()OpenCV库中有一个函数,但我不知道如何将参数传递给此函数以生成平均值为0且方差为1的数字.
Bul*_*ull 12
OpenCV有一个randn()函数和一个RNG类.下面是您可能要替换的Matlab代码,以及等效的OpenCV代码.
Matlab的:
matrix2xN = randn(2,N)
Run Code Online (Sandbox Code Playgroud)
OpenCV的:
cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::RNG rng(optional_seed);
cv::Mat matrix2xN(2,N,CV_64FC1);
rng.fill(matrix2xN, cv::RNG::NORMAL, mean, sigma);
Run Code Online (Sandbox Code Playgroud)
要么
cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::randn(matrix2xN, mean, sigma);
Run Code Online (Sandbox Code Playgroud)
在内部,OpenCV实现了randn()使用RNG.使用的缺点randn()是你失去了对种子的控制.
如果matrix2xN上面有多个通道,则每个通道使用不同的均值/西格玛.在这种情况下,您需要增加mean和sigma中的行数(或cols)以匹配matrix2xN中的通道数.