最近在學(xué)習(xí)Opencv for Unity這個插件蝇刀,但是不管是中文的資料還是英文都是少之又少(可能是我沒找到吧)勤晚,所以希望記錄一下自己學(xué)習(xí)的過程吧建芙。
OpenCV For Unity的環(huán)境我就不過多贅述了速缆,你搜索一下相信都能找到的。
今天就記錄一下OpenCV如何把圖片讀取進Unity中拉爆侣。
首先我們要引入OpenCVForunity的命名空間萍程。
然后他有一個Imgcodecs的類,從名字一看就是圖片解碼類累提,然后他里面有一個靜態(tài)的方法叫做imread(圖像讀瘸竞取),第一個參數(shù)是文件的路徑拉斋陪,第二個參數(shù)默認是1
static?Mat?imread?(string filename, int flags)
而flags則影響著你要讀圖像的通道數(shù):
當(dāng)flags等于-1的時候會從透明通道開始讀朽褪,則通道數(shù)為4置吓。
當(dāng)flags等于0時候會只讀灰色通道,就是灰度圖缔赠,通道數(shù)為1衍锚。
當(dāng)flags大于等于1時,通道數(shù)為3嗤堰,則是沒有透明通道的圖片了戴质。
返回一個mat的對象,這個mat對象就是Opencv里的容器踢匣,你可以理解為里面存著圖片的對象(數(shù)據(jù))告匠,有了他就可以對圖像進行處理。
而有了這個mat的對象后离唬,我們就可以把圖片載入unity顯示后专,而mat怎么和Unity的紋理轉(zhuǎn)換呢?
OpencvForUnity提供了一個Utils的功能類输莺,里面有一個靜態(tài)方法戚哎,matToTexture2D
下面是官方文檔對這個方法的說明
Mat的對象必須是RGBA或者RGB或者灰度圖
The Texture2D object has to be of the same size as the?Mat'(width * height).
Texture2D必須是RBA32或者ARGB32類型的
然后Texture的尺寸必須和mat同等大小。
他需要兩個參數(shù)一個mat的對象嫂用,一個是texture2D的容器型凳,然后轉(zhuǎn)換后,我們有了texture2D嘱函,我想你應(yīng)該知道怎么辦了吧甘畅,想把紋理用在哪里就用在哪里咯!嘻嘻实夹!
那么下面是完整的把橄浓,圖片讀取并載入unity的代碼拉。