OpenCV 有一个randn() http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#void%20randn%28InputOutputArray%20dst,%20InputArray%20mean,%20InputArray%20stddev%29函数,还有一个RNG http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#rng班级。下面是您可能想要替换的 Matlab 代码以及等效的 OpenCV 代码。
Matlab:
matrix2xN = randn(2,N)
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);
or
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);
在内部,OpenCV 实现了randn()
using RNG
。如果使用的话缺点randn()
是你失去了对种子的控制。
If matrix2xN
上面有多个通道,则每个通道使用不同的均值/西格玛。在这种情况下,您需要增加平均值和西格玛中的行数(或列数)以匹配matrix2xN中的通道数。