1.
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; int main(int argc, const char** argv) { cv::Mat src; src = cv::imread("C:/Users/duoduoda/Desktop/dog.jpg"); cv::imshow("input",src); //a. cv::RNG rng(12345); float f_a = rng.uniform(0.0, 1.0); float f_b = rng.uniform(0.0, 1.0); float f_c = rng.uniform(0.0, 1.0); cout << "float a:" << f_a << " float b:" << f_b << " float c:" << f_c << endl; //b. double ff_a = rng.gaussian(1.0); double ff_b = rng.gaussian(1.0); double ff_c = rng.gaussian(1.0); cout << "double a:" << ff_a << " double b:" << ff_b << " double c:" << ff_c << endl; //c. uchar b_a = (uchar)rng; uchar b_b = (uchar)rng; uchar b_c = (uchar)rng; //static_cast<int>是c++中的强制类型转换 cout << "uchar a:" << static_cast<int>(b_a) << " uchar b:" << static_cast<int>(b_b) << " uchar c:" << static_cast<int>(b_c) << endl; cv::waitKey(0); return 0; }2.
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; int main(int argc, const char** argv) { cv::Mat src; cv::RNG rng(12345); //a. cv::Mat m1 = cv::Mat::zeros(20, 1, CV_32F); rng.fill(m1, cv::RNG::UNIFORM, 0.0, 1.0); cout << m1 << endl; //b. cv::Mat m2 = cv::Mat::zeros(20, 1, CV_32F); rng.fill(m2, cv::RNG::NORMAL, 0.0, 1.0); cout << m2 << endl; //c. cv::Mat m3 = cv::Mat::zeros(20, 1, CV_8UC1); rng.fill(m3, cv::RNG::UNIFORM, 0, 255); cout << m3 << endl; //d. cv::Mat m4 = cv::Mat::zeros(20, 1, CV_8UC3); rng.fill(m4, cv::RNG::UNIFORM, 0, 255); cout << m4 << endl; cv::waitKey(0); return 0; }