Mat
赋值和创建:
Mat A = imread("images/test.png");
Mat B=A;赋值
Mat C=A.clone(); 克隆
Mat D;
A.copyTo(D);复制
// 创建空白图像
Mat E= Mat::zeros(A.size(), A.type()); 创建矩阵
Mat F = Mat::zeros(Size(512, 512), CV_8UC3);8位3通道
Mat G= Mat::ones(Size(512, 512), CV_8UC3);
Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0,
0, -1, 0,
0, -1, 0);
创建了一个3X3的矩阵
0 -1 0
0 -1 0
0 -1 0
像素级操作方式
因为Mat本质就是矩阵 所以可以通过循环来进行读取每个点的像素值进行操作
int height = src.rows; 获取图像的列
int width = src.cols;获取图像的行
int ch = src.channels();图像的通道数
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
//通过行列来进行循环读取每个像素的值
if (ch == 3) {
//如果是三通道图像
Vec3b bgr = src.at<Vec3b>(row, col);
bgr[0] = 255 - bgr[0];
bgr[1] = 255 - bgr[1];
bgr[2]