可以参考:https://www.cnblogs.com/guoben/p/12728390.html
方法1:
cv::Mat img_1 = cv::Mat::zeros(cv::Size(cols, rows), CV_8UC1);
注意cv::Size(cols, rows)
是先列再行。
方法2:
cv::Mat img_2 = cv::Mat::zeros(int rows, int cols, int type);
注意这里是先行再列。
type
可以为CV_8UC1
,如果涉及到Mat矩阵乘法cv::solve
求解A*X=B
,可以为CV_64FC1
访问cv::Mat
中的某个元素:
(1)单通道图像访问
// cv::Mat::at<type>(行号,列号)
// 请注意,单通道的必须这么写unsigned char,不能写成int,否则会有越界问题导致像素值变得紊乱
img.at<unsigned char>(y, x) = 255;
(2)RGB图像访问元素
// RGB通道的则必须这么使用,其中<Vec3b>是RGB通道的一个点(3通道)的类型uchar
// 第i行(y值),第j列(x值)
img.at<Vec3b>(i, j)[0] = 100; //B
img.at<Vec3b>(i, j)[1] = 120; //G
img.at<Vec3b>(i, j)[2] = 140; //R