基于EmguCV3.1.0
图像类:
EmguCV中主要的两个图像对象为Image<TColor,TDepth>和Mat,Image其中TColor是颜色类型,TDepth是图像位深度。
Mat在3.1.0中作为Image<TColor,TDepth>中的属性可以直接访问,还有父类UMat,不建议使用。
当然还有更加直观的Matrix矩阵类型,基本方法和上面两种类型类似。
其中TColor包含了Bgr Bgr565 Bgra Gray Hls Hsv Lab Luv Rgb Rgba Xyz Ycc
其中常用的包括Bgr,Gray,Hsv,一开始很多人会以为初始的三通道图像位Rgb,其实在OpenCV中的顺序为Bgr,OpenCV中的Rgb会调换R和B的位置。
Gray为单通道,也被常用为灰色。
Hsv是色调(H),饱和度(S),明度(V),可以表达图像的颜色。
还有一些后面加a是透明度为四通道,xyz和ycc是另外2中颜色的表达方式。
TDepth就是一些常用的数据类型,byte,uint,int ,float,double,一般正常打开图像都是用byte,如果图像需要做复杂运算会出现小数点的话可以用double。
图像初始化:
Image<TColor,TDepth>
public Image(string fileName);直接从文件中打开图像
public Image(Bitmap bmp);从.net的基本图像类型Bitmap中创建对象
public Image(Size size);通过图像尺寸创建空对象
public Image(Image<Gray, TDepth>[] channels);通过通道数组创建对象
public Image(int width, int height);同size创建空对象
public Image(int width, int height, TColor value);同size创建空对象,同时指定颜色类型
Mat
Mat的话就简单一点,可以直接Mat()创建空对象
public Mat(string fileName, LoadImageType loadType);通过文件名,加载方式创建对象
public Mat(Mat mat, Rectangle roi);通过已存在的Mat对象根据roi矩形框获取新的Mat
public Mat(Size size, DepthType type, int channels);根据size,位深度和通道数创建空对象
public Mat(int rows, int cols, DepthType type, int channels);根据行列数,位深度和通道数创建空对象