EmguCv主要有3种打开图片的方式。
一:Mat类实现
Mat类主要功能是存储图片数据结构,包括数据头和矩阵信息,主要的内存占据是图像信息矩阵。处理图像的时候可只复制数据头,可减少不必要的内存开销。按照需求针对图片的某个像素处理。能够得到图片的宽度(height),长度(weight),行(rows)列(cols)数,色彩类型(rgb,gray),通道数(channel)等各种具体的信息。
1.1 Mat image=new Mat(string filepath,Emgu.CV.CvEnum.LoadImageType.AnyColor);
1.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();
Bitmap转为Image可通过读取实现 Image<Bgr,byte> img=new Image<Bgr,byte> (bitmap);
2. 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);