上个随笔已经介绍 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); // 暂停按键等待
- }
函数解析:
1命名空间(必须的):
using Emgu.CV --- 封装了 OpenCV 基本图像处理函数, 在 CvInvoke 类中
using Emgu.CV.CvEnum ---OpenCV 枚举类型, 包含一些枚举类型宏定义
2Imread()函数:
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:
3NamedWindow()函数:
1)第一个参数, 设置作为标识的窗口名称
2)第二个参数, 窗口显示方式, 取值如下:
Normal: 正常大小显示, 用户可以改变窗口大小
Autosize: 根据图像大小自动调整, 用户不能手动改变窗口大小
Opengl: 支持 openGL
4Imshow()函数:
1)第一个参数, 设置需要显示的窗口名称
2)第二个参数, 填写需要显示的图像
注: 函数中出现 InputArray/ OutputArray 可先当做 Mat 类型
5Imwrite()函数:
1)第一个参数, 设置保存的文件名, 需填写后缀, 如 "1.bmp"
2)第二个参数, 要保存的 Mat 类型图像数据
3)第三个参数, 表示特定格式保存的参数编码, 一般采用默认值不填写
6WaitKey()函数:
1)第一个参数, 如果 delay>0, 表示等待 delay 毫秒之后结束
如果 delay=0, 表示无限等待, 直到有按键按下结束
2)返回值为对应按下按键的 ASCII 码值, 如 Esc 的 ASCII 码为 27
介绍一下 ASCll 表:
还有一些常用的方法:
1).IsEmpty 判断图像是否为空
2).Rows 获取图像行数(高度)
3).Cols 获取图像列数(长度)
4).NumberOfChannels 获取图像通道数
5).Depth 获取图像位深度
来源: http://www.bubuko.com/infodetail-2931437.html