上个随笔已经介绍EmguCV的一些常用库和程序安装以及环境变量的配置,这次写的是如何使用这个类库对图像进行操作。
EmguCV图像处理系统组成(个人见解):
图像的基本操作:
贴个代码:
using Emgu.CV; //使用命名空间 using Emgu.CV.Structure; using Emgu.CV.CvEnum; using Emgu.Util; static void Main(string[] args) { Mat srcImg = CvInvoke.Imread("1.jpg"); //读取图片 CvInvoke.NamedWindow("img", NamedWindowType.AutoSize); //创建窗口 CvInvoke.Imshow("img", srcImg); //显示图片 CvInvoke.Imwrite("1.bmp", srcImg); //保存结果图片 CvInvoke.WaitKey(0); //暂停按键等待 }
函数解析:
①命名空间(必须的):
using Emgu.CV ---封装了OpenCV基本图像处理函数,在CvInvoke类中
using Emgu.CV.CvEnum ---OpenCV枚举类型,包含一些枚举类型宏定义
②Imread()函数:
1)第一个参数,需要填入图片路径名,支持如下格式:
Windows位图: *.bmp, *.dib
JPEG文件: *.jpeg, *.jpg, *.jpe
JPEG2000文件: *.jp2
PNG图片: *.png
便携文件格式: *.pbm, *.pgm, *.ppm
Sun rasters光栅文件: *.sr, *.ras
TIFF文件: *.tiff, *.tif
2)第二个参数,指定加载图像的颜色类型,
默认为ImreadModes.Color=1:
③NamedWindow()函数:
1)第一个参数,设置作为标识的窗口名称
2)第二个参数,窗口显示方式,取值如下:
Normal:正常大小显示,用户可以改变窗口大小
Autosize: 根据图像大小自动调整,用户不能手动改变窗口大小
Opengl: 支持openGL
④Imshow()函数:
1)第一个参数,设置需要显示的窗口名称
2)第二个参数,填写需要显示的图像
注:函数中出现InputArray/ OutputArray可先当做Mat类型
⑤Imwrite()函数:
1)第一个参数,设置保存的文件名,需填写后缀,如"1.bmp"
2)第二个参数,要保存的Mat类型图像数据
3)第三个参数,表示特定格式保存的参数编码,一般采用默认值不填写
⑥WaitKey()函数:
1)第一个参数,如果delay>0, 表示等待delay毫秒之后结束
如果delay=0, 表示无限等待,直到有按键按下结束
2)返回值为对应按下按键的ASCII码值,如Esc的ASCII码为27
介绍一下ASCll表:
还有一些常用的方法:
1).IsEmpty 判断图像是否为空
2).Rows 获取图像行数(高度)
3).Cols 获取图像列数(长度)
4).NumberOfChannels 获取图像通道数
5).Depth 获取图像位深度