关于Emgu中图像数据格式说明(Mat,Image,BitMap)

1、Mat格式

名称空间 Namespace: Emgu.CV
细节 Mat是一个类,记录和存储图像数据,主要由两个数据部分组成: < 矩阵头(大小,通道,数据类型等) > 和 < 数据块(像素值) > 。
注: 不可以利用PictureBox组件显示

声明方式:Mat mat=new Mat();

2、Bitmap格式

名称空间 namespace System.Drawing
细节 封装 GDI+ 位图,此位图由图形图像及其属性的像素数据组成。 Bitmap 是用于处理由像素数据定义的图像的对象 。
注: 可以利用PictureBox组件显示

声明方式:Bitmap bitimg = new Bitmap();

3、Image格式

名称空间 namespace System.Drawing
细节 源自 Bitmap 和 Metafile 的类提供功能的抽象基类。
注: 可以利用PictureBox组件显示

声明方式:Image img = Image.FromFile(Sting img_path);

4、Image格式

名称空间 Namespace: Emgu.CV
细节 这个类包含两个泛型参数:TColor和TDepth,定义一个Image对象时,需要指定色彩空间类型和数据深度。
注: 不可以利用PictureBox组件显示

声明方式:Image<Bgr, byte> img = new Image<Bgr, byte>(string img_path);

5、UMat格式

名称空间 Namespace: Emgu.CV
细节 Mat类型的父类UMat,Mat,只有当你知道自己在做什么时才应该使用。在大多数情况下,您应该使用Matrix类。
注: 不可以利用PictureBox组件显示

声明方式:UMat umat=new UMat();

6、Matrix格式

名称空间 Namespace: Emgu.CV
细节 Matrix是OpenCV的cvMat的包装器。
注: 不可以利用PictureBox组件显示

声明方式:Matrix<Single> matrix = new Matrix<Single>(480, 320);

不同数据之间的格式转化

1)由 1、Mat格式 转为 4、Image 和 2、Bitmap格式

Mat mat = new Mat(path);
Bitmap bitmap=mat.ToBitmap();
Image<Bgr, byte> immat=mat.ToImage<Bgr,byte>();  

2)由 3、Image格式 转为 2、Bitmap格式

Bitmap bitimg = new Bitmap(pictureBox1.Image);由piturebox中的显示图像

3)由 2、Bitmap格式 转为 1、Mat格式和4、Image

Bitmap bitimg = new Bitmap();
Mat bitmat = BitmapExtension.ToMat(bitimg); 
Image<Bgr, byte> immat = BitmapExtension.ToImage<Bgr, byte>(bitimg);
注:需要引入NuGet包 Emgu.CV.Bitmap

4)由 5、UMat格式 互相转 1、Mat格式

1、Mat转UMat
UMat umat = mat.GetUMat(Emgu.CV.CvEnum.AccessType.Fast);
2、UMat 转 Mat
Mat mat = umat.GetMat(Emgu.CV.CvEnum.AccessType.Fast);

你可能感兴趣的:(opencv,计算机视觉,c#,EmGU)