最近在学习Opencv for Unity这个插件,但是不管是中文的资料还是英文都是少之又少(可能是我没找到吧),所以希望记录一下自己学习的过程吧。
OpenCV For Unity的环境我就不过多赘述了,你搜索一下相信都能找到的。
今天就记录一下OpenCV如何把图片读取进Unity中拉。
首先我们要引入OpenCVForunity的命名空间。
然后他有一个Imgcodecs的类,从名字一看就是图片解码类,然后他里面有一个静态的方法叫做imread(图像读取),第一个参数是文件的路径拉,第二个参数默认是1
static Mat imread (string filename, int flags)
而flags则影响着你要读图像的通道数:
当flags等于-1的时候会从透明通道开始读,则通道数为4。
当flags等于0时候会只读灰色通道,就是灰度图,通道数为1。
当flags大于等于1时,通道数为3,则是没有透明通道的图片了。
返回一个mat的对象,这个mat对象就是Opencv里的容器,你可以理解为里面存着图片的对象(数据),有了他就可以对图像进行处理。
而有了这个mat的对象后,我们就可以把图片载入unity显示,而mat怎么和Unity的纹理转换呢?
OpencvForUnity提供了一个Utils的功能类,里面有一个静态方法,matToTexture2D
下面是官方文档对这个方法的说明
Mat的对象必须是RGBA或者RGB或者灰度图
The Texture2D object has to be of the same size as the Mat'(width * height).
Texture2D必须是RBA32或者ARGB32类型的
然后Texture的尺寸必须和mat同等大小。
他需要两个参数一个mat的对象,一个是texture2D的容器,然后转换后,我们有了texture2D,我想你应该知道怎么办了吧,想把纹理用在哪里就用在哪里咯!嘻嘻!
那么下面是完整的把,图片读取并载入unity的代码拉。