学习图像处理知识---EmguCV3.4 matrix类学习(三)

由于有matrix类和Image类有很多共同点,很多Image类可以用的函数,matrix类也能使用

1.保存图片函数

public virtual void Save(string fileName)//保存图片的名称。

2.复制矩阵

public virtual Matrix<TDepth> Clone()

3.拼接矩阵(横向,纵向方向)类似Image类,注意拼接保证(W,H的一致型)

public Matrix<TDepth> ConcateVertical(Matrix<TDepth> otherMatrix)//H方向加,要求W方向一致。
public Matrix<TDepth> ConcateHorizontal(Matrix<TDepth> otherMatrix)//水平方向加要求H方向一致。

4.复制空矩阵

public Matrix<TDepth> CopyBlank()//复制,同时里面元素值都为0。

5.分离多通道的矩阵(类似图像)

public Matrix<TDepth>[] Split() //得到矩阵数组

6.转置(相当转90度,w,h对换)

public Matrix<TDepth> Transpose()

7.得到子矩阵(类似图片COPY子图)

public Matrix<TDepth> GetSubRect(Rectangle rect) //矩阵
public Matrix<TDepth> GetCol(int col)//得到一列的子矩阵
public Matrix<TDepth> GetCols(int startCol,int endCol)//得到几列的子矩阵
public Matrix<TDepth> GetRow(int row)//得到一行的子矩阵
public Matrix<TDepth> GetRows(int startRow,int endRow,int deltaRow)//得到几行的子矩阵,deltaRow步调

8.删掉部分矩阵部分数据

public Matrix<TDepth> RemoveCols(int startCol,int endCol)//删除几列的子矩阵
public Matrix<TDepth> RemoveRows(int startRow,int endRow)//删除几行的子矩阵

9.得到类似图片ROS的矩阵,共享数据

public Matrix<TDepth> Reshape(int newChannels,int newRows)

10.返回这个矩阵的主对角线元素

public Matrix<TDepth> GetDiag()//返回矩阵的主对角线元素的矩阵
public Matrix<TDepth> GetDiag(int diag)//返回特定的这个矩阵的对角元素
案例学习:

  ///保存图片

Matrix<Byte> mat1 = new Matrix<byte>(new Size(500, 200));

            for (int i = 0; i < 200; i++)
                for (int j = 0; j < 500; j++)
                    mat1[i, j] = 100;
            imageBox1.Image = mat1.Mat;
            mat1.Save("mei.jpg"); //图片


///拼接(

  Matrix<Byte> mat1 = new Matrix<byte>(new Size(500, 200));
            for (int i = 0; i < 200; i++)
                for (int j = 0; j < 500; j++)
                    mat1[i, j] = 100;
            Matrix<Byte> mat2 = new Matrix<byte>(new Size(500, 300));
            for (int i = 0; i < 300; i++)
                for (int j = 0; j < 500; j++)
                    mat2[i, j] = 100;
            Matrix<Byte> mat3 =  mat1.ConcateVertical(mat2);
            imageBox1.Image = mat3.Mat;
            mat3.Save("mei.jpg");


  Matrix<Byte> mat2 = new Matrix<byte>(new Size(500, 300));
            for (int i = 0; i < 300; i++)
                for (int j = 0; j < 500; j++)
                    mat2[i, j] = 100;
            Matrix<Byte> mat3 =  mat1.ConcateVertical(mat2);
            imageBox1.Image = mat3.Mat;
            Matrix<Byte> mat4=mat2.Transpose(); //转置,可以看图片变了
            mat3.Save("mei.jpg");
            mat4.Save("mei1.jpg");


 

猜你喜欢

转载自blog.csdn.net/tuto7534/article/details/80235315