常用容器:
Bitmap:
- Bitmap位图文件,是Windows标准格式,也是.Net主要的图像存储格式。
- Bitmap类以System.Drawing为命名空间,继承抽象类Image,同时里面封装了非常多对图像操作的函数。
Image<TColor, TDepth>:
- Image<TColor,TDepth>是Emgu Cv3.0版本之前的主要存储图像类型,同时也在3.0之后也是兼容。
- TColor是一个颜色类型,TDepth是一个图像深度类型。
- Image<TColor, TDepth>的父类为(CvArray<TDepth>,IImage, IDisposable, ICloneable, IInputOutputArray, IOutputArray,IInputArrayOfArrays, IInputArray, IEquatable<Image<TColor, TDepth>)。当有些函数的参数为以上类型,就可以用Image<TColor,TDepth>来替换。以Emgu.CV为命名空间。
Mat:
- 在Emgu Cv3.0版本之后(包括3.0版本)才出现的,Mat的父类为(MatDataAllocator,IImage, IDisposable, ICloneable, IInputOutputArray, IOutputArray,IInputArrayOfArrays, IInputArray, IEquatable<Mat>, ISerializable)。当有些函数的参数为以上类型,就可以用Mat来替换。以Emgu.CV为命名空间。
UMat:
- 在大多数情况下,您应该使用Matrix类来替换。UMat父类为(MatDataAllocator,IImage, IDisposable, ICloneable, IInputOutputArray, IOutputArray,IInputArrayOfArrays, IInputArray, IEquatable<UMat>, ISerializable),以Emgu.CV为命名空间。
/// <summary>
/// 类型转换
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTranstion_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap("001.jpg");
//Bitmap转Image<Bgr, byte>
Image<Bgr, byte> image = new Image<Bgr, byte>(bitmap);
//Image<Bgr, byte>转Bitmap
Bitmap _bitmap = image.ToBitmap();
Bitmap _bitmap1 = image.Bitmap;
//Image<Bgr, byte>转Mat
Mat _mat = image.Mat;
Mat _mat1 = image.ToUMat().GetMat(Emgu.CV.CvEnum.AccessType.Fast);
//Mat转Image<Bgr, byte>
Image<Bgr, byte> _image = _mat.ToImage<Bgr, byte>();
//Mat转UMat
UMat umat = _mat.GetUMat(Emgu.CV.CvEnum.AccessType.Fast);
//UMat转Mat
Mat mat = umat.GetMat(Emgu.CV.CvEnum.AccessType.Fast);
//UMat转Image<Bgr, byte>
Image<Bgr, byte> _image1 = umat.ToImage<Bgr, byte>();
//Image<Bgr, byte>转UMat
UMat umat2 = image.ToUMat();
imgLoad.Image = image;
}
---------------------
原文:https://blog.csdn.net/zhgl7688/article/details/70963250