上篇对图像类中CvInvoke类简单学习初步使用方法,为了更好的学习图像处理。对图像的数据结构进行学习的必要。
矩阵,链,图,物体属性表,关系数据库,其中矩阵用的最多,数组矩阵。
在EMGUCV中图像操作有关的数据结构有Mat,Matrix,Image,CvArray,InputOutputArray,OutputArray,UMat等矩阵变种。
Image类 (Namespace: Emgu.CV)
Mat 类 Matrix类
常用构造函数:
1.public Image( Bitmap bmp //net类中 bitmap )
public Mat() //可以为无参的构造函数
2.public Image(
Size size //创建空白尺寸的图片
)
public Mat( Size size, DepthType type, int channels )
public Matrix( Size size )
public Matrix( int rows, int cols, int channels )
3.public Image(
string fileName //从文件中创建 )
public Mat( string fileName, ImreadModes loadType = ImreadModes.Color )
4.public Image(
TDepth[,,] data //从多维数组中创建,第一位height,第二位width,第三位颜色通道。
)
public Matrix( TDepth[,] data )
5.public Image(
Image
<
Gray
, TDepth>[]
channels// 从多个灰度图像创建一个多通道图像
)
public Mat( Mat mat, Rectangle roi )
6.public Image(
//创建带颜色尺寸的图片
int width, int height, TColor value )
图像类型之间转换
- Bitmap bitmap = new Bitmap("test.jpg");
- //NET 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();