Генерация матрицы случайных чисел в OpenCV

90
11

Я хочу знать, как я могу сгенерировать матрицу случайных чисел любого заданного размера, например 2x4. Матрица должна состоять из целого целого числа в диапазоне, например [-500, +500].


Я прочитал документацию RNG, но я не уверен, как я должен это использовать.
Я также назвал это question, но это не обеспечило мне решение, которое я ищу.


Я знаю, что это может быть глупый вопрос, но любая помощь в этом была бы оценена по достоинству.

спросил(а) 2021-01-19T21:59:39+03:00 6 месяцев, 2 недели назад
1
Решение
119

Если вы хотите, чтобы значения были равномерно распределены, вы можете использовать cv:: randu


Mat1d mat(2, 4); // Or: Mat mat(2, 4, CV_64FC1);
double low = -500.0;
double high = +500.0;
randu(mat, Scalar(low), Scalar(high));

Обратите внимание, что верхняя граница является эксклюзивной, поэтому этот пример представляет данные в диапазоне [-500, +500).


Если вы хотите, чтобы значения были нормально распределены, вы можете использовать cv:: randn

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));

Это работает для матриц до 4 каналов, например:


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

ответил(а) 2021-01-19T21:59:39+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема