用OpenCV For Unity读取图片

最近在学习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的代码拉。


你可能感兴趣的:(用OpenCV For Unity读取图片)