上篇對圖像類中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();