一、Mat
Mat 类主要功能是存储图片数据结构,包括数据头和矩阵信息,主要的内存占据是图像信息矩阵。
处理图像的时候可只复制数据头,可减少不必要的内存开销。
按照需求针对图片的某个像素处理。能够得到图片的宽度(height),长度(weight),行(rows)列(cols)数,色彩类型(rgb,gray),通道数(channel)等各种具体的信息。
(1) Mat image=new Mat(string filepath,Emgu.CV.CvEnum.LoadImageType.AnyColor);
(2) Mat image =CvInvoke.Imread(string filepath,Emgu.CV.CvEnum.LoadImageType.AnyColor);
二、Image<TColor,TDepth>
Image<Bgr,byte> img=new Image<Bgr,byte>("string filepath,Emgu.CV.CvEnum.LoadImageType.AnyColor");
该类能够实现多种图像处理功能,灰度化,二值化,滤波处理,边缘检测,反色,模糊,膨胀等等处理。
该类还能转为Bitmap,Mat,Image其他的图片类型,Mat,Bitmap等其他类也可以转为该类。
(1) Image<Bgr,byte> 转为 Bitmap 可通过函数 img.ToBitmap();
(2) Bitmap 转为 Image 可通过读取实现 Image<Bgr,byte> img = new Image<Bgr,byte> (bitmap);
(3) Mat 类可以通过 Image<Bgr,byte>matToimg = Matimg.ToImage<Bgr,byte>();
ImgToMat = img.Mat;(等式左边为目标类型,右边原始类型)
三、IntPtr
该类主要通过寻址的方式(指向图像存储空间首地址),对整张图片进行处理,获得地址后需要通过 Mat 类,转为展示的图片类型。
Img= new Mat(height, weight, Emgu.CV.CvEnum.DepthType.Cv8U, 1, (IntPtr)imgIntPtr, step);