Mat A = imread ( imgFilePath );
Mat B (A) // Solo copia
Mat F = A. clon ();或Mat G; A.copyTo (G);
Uso de objetos de tapete : cuatro puntos
Creación de objetos de tapete
Mat M (2,2, CV_8UC3, Escalar (0,0,255))
Donde los dos primeros parámetros representan la fila (Fila) con la fila (columna) , el tercer CV_8UC3 en 8 representa cada canal que representa 8 bits, el U- sin signo, C denota el tipo Char , 3 representa el número de canales es 3 , el primero Los cuatro parámetros son vectores que indican cuánto se inicializa cada valor de píxel y la longitud del vector corresponde al número de canales.
int sz [3] = {2,2,2};
Mat L (3, sz, CV_8UC1, Scalar :: all (0));
//txwtech 2021.3
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat src;
src = imread("E:/pictures/test1.jpg");
if (src.empty())
{
cout << "cannot load img" << endl;
return -1;
}
namedWindow("in",CV_WINDOW_AUTOSIZE);
imshow("in",src);
Mat dst;
dst = Mat(src.size(), src.type());//创建一个与src大小与类型一样的Mat对象
dst = Scalar(127,0,255);//创建一个纯颜色的图像
namedWindow("out",CV_WINDOW_AUTOSIZE);
imshow("out",dst);
//克隆,完全拷贝,一模一样的
Mat dst2;
//dst2 = src.clone();
src.copyTo(dst2);
cvtColor(src,dst2,CV_RGB2GRAY);//转换为灰度空间
printf("in img channels:%d\n",src.channels());//显示有多少个通道
printf("out img channels:%d\n", dst2.channels());
namedWindow("out2", CV_WINDOW_AUTOSIZE);
imshow("out2", dst2);
//通过指针访问图像
const uchar* firstRow = dst2.ptr<uchar>(0);
printf("first pixel value:%d\n",*firstRow);//显示第一个像素点的值
//显示有多少行和列,宽与高
int cols = dst.cols;
int rows = dst.rows;
printf("rows:%d...cols:%d...\n",rows,cols);
//定义一个红色
Mat M(100, 100, CV_8UC3, Scalar(0,0,255));//行与列都是100的长度的红色图片
//Scalr里面的参数个数与前面一个保持一致,目前3个,对应CV_8UC3
//Mat M(100, 100, CV_8UC1, Scalar(127));//表示灰度图像。目前1个,对应CV_8UC1
//cout << "M=" << endl << M << endl;
//create方式创建Mat对象
Mat M2;
M2.create(src.size(),src.type());
M2 = Scalar(0, 0, 255);//创建一个与原图像大小一致的,红色图像
//掩膜,提高对比度
Mat csrc;
Mat kernel = (Mat_<char>(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
filter2D(src, csrc,-1,kernel);
namedWindow("out3", CV_WINDOW_AUTOSIZE);
//全部初始化为全黑色的图片
Mat M3 = Mat::zeros(src.size(),src.type());
imshow("out3", M3);
Mat m5 = Mat::zeros(2,2,CV_8UC1);
cout << "m5=" << endl << m5 << endl;
Mat m6 = Mat::eye(2,2,CV_8UC1);
cout << "m6=" << endl << m6 << endl;//运行查看实际效果
waitKey(0);
return 0;
}