天天看點

學習圖像處理知識----圖像分析的資料結構

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

圖像類型之間轉換

  1. Bitmap bitmap = new Bitmap("test.jpg");  
  2.     //NET Bitmap轉Image<Bgr, byte>  
  3.     Image<Bgr, byte> image = new Image<Bgr, byte>(bitmap);  
  4.     //Image<Bgr, byte>轉Bitmap  
  5.     Bitmap _bitmap = image.ToBitmap();  
  6.     Bitmap _bitmap1 = image.Bitmap;  
  7.     //Image<Bgr, byte>轉Mat  
  8.     Mat _mat = image.Mat;  
  9.     Mat _mat1 = image.ToUMat().GetMat(Emgu.CV.CvEnum.AccessType.Fast);  
  10.     //Mat轉Image<Bgr, byte>  
  11.     Image<Bgr, byte> _image = _mat.ToImage<Bgr, byte>();  
  12.     //Mat轉UMat  
  13.     UMat umat = _mat.GetUMat(Emgu.CV.CvEnum.AccessType.Fast);  
  14.     //UMat轉Mat  
  15.     Mat mat = umat.GetMat(Emgu.CV.CvEnum.AccessType.Fast);  
  16.     //UMat轉Image<Bgr, byte>  
  17.     Image<Bgr, byte> _image1 = umat.ToImage<Bgr, byte>();  
  18.     //Image<Bgr, byte>轉UMat  
  19.     UMat umat2 = image.ToUMat();