OpenCvSharp 学习笔记1 -- Mat对象

一 : Mat 对象的创建

OpenCvSharp 版本:v4.0.30319

  • mat 对象继承了 IDisposable 接口,可以直接用using 语句。
  • mat 对象的构造函数有十几个之多,我这里之列举常用的几个。
  • Mat 在C++ 中是一个矩阵变量,但是在 C#中是一个对象,只能 new
    代码:

1. 创建Mat对象并显示图像

static void Main(string[] args)
        {
            string imagePath = @"E:\image\lenna.png"; //图片加载路径
             /*
             * 参数:
             *     1:图片路径(一定要正确,找不到会报错)
             *     2:指定加载图像的颜色和深度(枚举类型,可以指定多个类型),这里指定的任何颜色和任何深度
             */
            using (Mat src = new Mat(imagePath,ImreadModes.AnyColor|ImreadModes.AnyDepth))
            {
                /*
                 * new Window :新建一个窗口显示窗口
                 *  参数:
                 *      1:窗口名称
                 *      2:窗口显示的模式(枚举类型)-- 可选参数,可以不指定
                 *      3:指定要显示的Mat对象。
                 */
                using (new Window("Input Image", WindowMode.AutoSize, src)) //新建一个窗口显示图片
                {
                    Cv2.WaitKey(0); //等待,一定要等待一下不然一闪而过。
                }
            }
        }

OpenCvSharp 学习笔记1 -- Mat对象_第1张图片
2. 显示加载灰度图像

static void Main(string[] args)
        {

            string imagePath = @"E:\image\lenna.png"; //图片加载路径
            /*
             * 参数:
             *     1:图片路径(一定要正确,找不到会报错)
             *     2:指定加载图像的颜色和深度(枚举类型,可以指定多个类型),这里指定加载灰度图像
             */
            using (Mat src = new Mat(imagePath,ImreadModes.Grayscale))
            {
                /*
                 * new Window :新建一个窗口显示窗口
                 *  参数:
                 *      1:窗口名称
                 *      2:窗口显示的模式(枚举类型)-- 可选参数,可以不指定
                 *      3:指定要
                 */
                using (new Window("Input Image", WindowMode.AutoSize, src)) //新建一个窗口显示图片
                {
                    Cv2.WaitKey(0); //等待
                }
            }
        }

OpenCvSharp 学习笔记1 -- Mat对象_第2张图片

3.自定义图像

  static void Main(string[] args)
        {
            Scalar s = new Scalar(0, 0, 255);//创建一个颜色对象

            /*
             * 参数:
             *      1: 行 --指定图像的像素行数,多个行组成图片的高度
             *      2: 列 --指定图像的像素列数,多个列组成图片的宽度
             *      3: 对象类型,结构体类型 矩阵数据类型(深度和通道数) MatType
             *      4: 图像颜色
             */
            Mat m = new Mat(100, 100, MatType.CV_8UC3, s); 
            using (new Window("M", WindowMode.AutoSize, m))
            {
                Cv2.WaitKey(0);
            }
        }

输出图像:
OpenCvSharp 学习笔记1 -- Mat对象_第3张图片
明显的,100个像素宽和100个像素高的图片,颜色是红色,(0,0,255)

4.创建一个已知图像一样大小和类型的图片

       public static void CreateImage(string imagePath)
        {
            using (var src = new Mat(imagePath, ImreadModes.AnyColor | ImreadModes.AnyDepth))
            using (var dst = new Mat(src.Size(), src.Type(), Scalar.All(0)))   //与原图大小类型一致 ,黑色
            {
               //dst.Create();//分配新的数据和类型
                using (new Window("src", WindowMode.FreeRatio, src))
                using (new Window("dst", WindowMode.FreeRatio, dst))
                {
                    Cv2.WaitKey(0);
                }
            }
        }

你可能感兴趣的:(OpenCvSharp 学习笔记1 -- Mat对象)