首页 > 编程知识 正文

OpenCvSharp 学习笔记1 Mat对象,发展对象学习笔记

时间:2023-05-06 12:27:25 阅读:204630 作者:2047

一 : Mat 对象的创建

OpenCvSharp 版本:v4.0.30319

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

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

static void Main(string[] args) { string imagePath = @"E:imagelenna.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); //等待,一定要等待一下不然一闪而过。 } } }


2. 显示加载灰度图像

static void Main(string[] args) { string imagePath = @"E:imagelenna.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); //等待 } } }

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); } }

输出图像:

明显的,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); } } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。