常用的方法:
public void Push(byte[] value);//向数组中添加数据。 public byte[] ToArray();//VectorOfByte转成byte[]类型。
类型转换
在图像处理中存在各种各样的数据类型,当我们不熟悉如何把一种类型转换成另外一种类型,这对于编程者带来非常多的困扰。接下来主要分析Emgu Cv常用到的数据类型。
常用容器:
Bitmap:
Bitmap位图文件,是Windows标准格式,也是.Net主要的图像存储格式。
Bitmap类以System.Drawing为命名空间,继承抽象类Image,同时里面封装了非常多对图像操作的函数。
Image
Image
同时也在3.0之后也是兼容。TColor是一个颜色类型,TDepth是一个图像深度类型。Image
Mat:
在Emgu Cv3.0版本之后(包括3.0版本)才出现的,Mat的父类为
(MatDataAllocator, IImage, IDisposable, ICloneable, IInputOutputArray, IOutputArray, IInputArrayOfArrays, IInputArray, IEquatable
UMat:
在大多数情况下,您应该使用Matrix类来替换。UMat父类为(MatDataAllocator, IImage, IDisposable, ICloneable, IInputOutputArray, IOutputArray, IInputArrayOfArrays, IInputArray, IEquatable
常用容器转换:如表2.1所示。
原始类型 表 2.1 常用容器类型转换
目标类型 实现代码 Bitmap Image
颜色类型转换:
在上面内容中已经介绍过Emgu Cv存在的颜色空间。接下来,做颜色空间的转换操作。这边主要对Image
Image
可以通过对TColor的更改从而更改颜色空间,对TDepth更改从而更改
、
代码如下:
Image
例子:
Image
Image
这边我还是比较喜欢Image
Mat:
通过CVInvoke类的CvtColor函数来实现:
public static void CvtColor(IInputArray src, IOutputArray dst, ColorConversion code, int dstCn = 0);//一种颜色空间转成另外一种颜色空间:
参数解析:
IInputArray src,:输入图像。 IOutputArray dst:目标图像。
ColorConversion code:Emgu.CV.CvEnum的一个枚举标识符。
这边总共有140多种类型转换,这边就不全部列举(如表2.2所示)。
表2.2 颜色类型转换标识符
标识符 转换类型
Bgr2Gray = 6 Bgr转成Gray
Bgr2Hsv = 40 Bgr转成Hsv
Bgr2Lab = 44 Bgr转成Lab
Hsv2Rgb Hsv转成Bgr
..... 等等
本章内容到此为止,接下来会通过编写代码和录制视频讲解使读者更加详细的了解和使用以上内容。
第三章 图像处理基础篇
1. 创建图片:
Image
采用Image
图 3.1 Image
常用的的方法如下:
public Image(Bitmap bmp);//采用Bitmap图像创建。 public Image(string fileName);//指定路径创建图像。
public Image(int width, int height, TColor value);//采用固定大小和颜色创建图像。
详细介绍public Image(string fileName)方法:
string fileName:为图片的路径。如果直接添加图片的名字,系统将会自动添加Application.StartupPath+\。如图3.2所示。
Image
Image
Image
Image
Desktop\\\\你好.png\创建桌面一张你好.png图片。
OpenFileDialog op = new OpenFileDialog();
if(op.ShowDialog ()==DialogResult .OK ) {
Image
(op.FileName);//通过打开文件对话框来加载选中的图片。
}
图 3.2 Image
Mat:
采用Mat来创建图片总共有8总方法,如图3.3所示。
图 3.3 Mat创建图像方法
常用到的方法如下:
public Mat();//实例化一个空容器。
public Mat(string fileName, LoadImageType loadType);//指定目录指定类型创建图片。
public Mat(int rows, int cols, DepthType type, int channels);//指定大小,类型,通道数创建Mat容器。
详细介绍第二种方法:
String fileName:和Image
LoadImageType loadType:是一个Emgu.CV.Cvenum的一个标识符。标识图像类型,类似于Image
标识符如表3.1所示。
表示符 Unchanged = -1 Grayscale = 0 TCloor类型 8位bit类型(byte) 8位类型(byte) TDepth类型 无关 灰度(gray)