我正在寻找最好的解决方案,在OpenCV中生成一个2xN的随机矩阵,均值为0,方差为1,就像Matlab中的randn()函数一样。
在OpenCV库中有一个
在OpenCV库中有一个
randn()
函数,但我不知道如何传参数给这个函数,以生成均值为0,方差为1的随机数。OpenCV有一个randn()函数和一个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);
或者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使用RNG
来实现randn()
。使用randn()
的缺点是您失去了对种子的控制。
如果上面的matrix2xN
有多个通道,则每个通道都会使用不同的均值/方差。在这种情况下,您需要增加均值和方差中的行数(或列数),以匹配matrix2xN
中通道的数量。
cv::Mat
来指定均值或标准差...难道不应该使用标量或cv::Scalar
更合适吗?奇怪。 - rayryeng