这里的opencv使用的是opencvsharp,它是c#语言对c++的opencv的一层封装,使得c#开发者可以更方便的使用opencv,而不必纠结于跨语言调用的问题。
因此,这里使用的opencv的api可能和原本的c++版本的api不太一样,具体请参阅opencvsharp的文档。
1. Mat to Texture2D
1.1 通过png编码
int w=...
int h=...
...
Texture2D tex=new Texture2D(w,h,TextureFormat.RGB24,false,false);
Mat mat= new Mat(h,w, MatType.CV_8UC3);
...
//the key code
tex.LoadImage (mat.ToBytes(".png"));
1.2 通过原始像素矩阵(数组)
2.Texture2D to Mat
2.1 通过png编码
int w=...
int h=...
...
Texture2D tex=new Texture2D(w,h,TextureFormat.RGB24,false,false);
...
//the key code
Mat mat=Mat.FromImageData(tex.EncodeToPNG());
2.2 通过原始像素矩阵(数组)
int w=...
int h=...
...
Texture2D tex=new Texture2D(w,h,TextureFormat.RGB24,false,false);
//key code
Mat mat= new Mat(h, w, MatType.CV_8UC3, tex.GetRawTextureData());
Cv2.CvtColor(mat, mat, ColorConversion.BgrToRgb);
Cv2.Flip(mat, mat, FlipMode.X);