1.中心思想:不要使用randu、randn这种,要先用时间值作为随机种子,然后使用fill。
2.该方法不能指定种子,每次生成的序列都一样,都是91、83、138……
void CMyXXXDlg::OnBnClickedButton1()
{
Mat mat_map(30, 40, CV_8UC1);
randu(mat_map, 0, 255);
CString str;
str.Format(_T("%d"), mat_map.at<uchar>(0,0));
MessageBox(str);
}3.该方法可以指定种子,每次运行结果都不一样:
void CMyXXXDlg::OnBnClickedButton2()
{
Mat mat_map(30, 40, CV_8UC1);
RNG rng(unsigned int(time(NULL)));
rng.fill(mat_map, RNG::UNIFORM, 0, 255, false);
CString str;
str.Format(_T("%d"), mat_map.at<uchar>(0,0));
MessageBox(str);
}
本文介绍了使用OpenCV进行随机数生成的两种方法:一种直接使用randu导致每次生成序列相同;另一种通过设置时间作为随机种子,利用RNG::fill确保每次运行结果不同。后者更适合需要变化序列的应用场景。
418

被折叠的 条评论
为什么被折叠?



