轉(zhuǎn)自:http://dev.arinchina.com/177wz/ar9641/9641/1
啟用相機攝影攝像能力
在使用攝像頭時,我們必須啟用WebCam能力。
1.? ???在Unity中碰逸,打開Player settings削祈,(通過導(dǎo)航饰抒,到“編輯>項目設(shè)置>播放器”頁面訪問播放器設(shè)置)
2.? ???展開Windows Store標(biāo)簽頁
3.? ???在"Publishing Settings > Capabilities"部分中肮砾,勾選WebCam能力
在同一時刻中只能執(zhí)行一次相機操作。為了識別當(dāng)前相機環(huán)境處于哪種模式下(拍照還是視頻或無場景)袋坑,你可以通過UnityEngine.VR.WSA.WebCam.Mode來進行檢查仗处。
照片捕獲
命名空間:UnityEngine.VR.WSA.WebCam
類型:PhotoCapture
PhotoCapture類型允許使用相機拍攝靜態(tài)照片。使用相機拍攝的正常模式如下:
1.??創(chuàng)建PhotoCapture對象
2.??通過使用想要的設(shè)置來創(chuàng)建一個CameraParameters對象
3.??調(diào)用StartPhotoModeAsync()枣宫,開始拍照模式
4.??選取想要的照片拍攝
·? ?? ???(可選項)進一步處理圖像
5.? ?關(guān)閉拍照模式并釋放資源
使用PhotoCapture的通用設(shè)置
對于任意拍照方式婆誓,開始的前三步都如下:
創(chuàng)建PhotoCapture對象
存儲對象,配置拍攝參數(shù)并開始拍照模式
最后也颤,需要使用同樣的清理代碼來關(guān)閉相機
完成這些步驟后洋幻,你可以挑選使用捕獲照片方式。
捕獲照片至文件
最簡單的操作是直接將照片捕獲到文件翅娶。照片可以被存儲為PNG或JPG格式文留。
如果我們成功開始了拍照模式,就需要拍照并將照片存儲到磁盤上竭沫。
完成捕獲照片到磁盤的操作后燥翅,我們需要退出拍照模式并清理對象
捕獲文件至Texture2D對象
我們可以把捕獲數(shù)據(jù)保存為Texture2D對象,做法和保存到磁盤類似蜕提。步驟如下:
在OnPhotoModeStarted森书,捕獲一幀圖像到內(nèi)存中。
我們需要把得到的結(jié)果賦給Texture2D對象谎势,然后清理代碼
捕獲照片并與原始數(shù)據(jù)交互
為了在內(nèi)存中操作圖像原始數(shù)據(jù)凛膏,需要的步驟和捕獲圖片到Texture2D類似,不同之處在于脏榆,OnCapturedPhotoToMemory()方法里可以獲得圖像原始數(shù)據(jù)并操作它們猖毫。
在下面的例子中,我們會創(chuàng)建一個List用來進一步處理或者直接通過SetPixels()方法來應(yīng)用于Texture2D對象姐霍。
捕獲視頻
命名空間:UnityEngine.VR.WSA.WebCam
類型:VideoCapture
捕獲視頻的用法和捕獲照片相似鄙麦,不同之處在于你必須指定一個幀率(FPS),并且直接存儲到磁盤上的視頻必須是MP4格式镊折。
下面是具體步驟:
1.? ? 創(chuàng)建VideoCapture對象
2.? ? 使用我們想要的設(shè)置來創(chuàng)建一個CameraParameters對象
3.? ? 調(diào)用 StartVideoModeAsync()方法開始視頻捕獲模式
4.? ? 開始錄制視頻
5.? ? 停止錄制視頻
6.? ? 停止視頻捕獲模式并釋放相機資源
開始創(chuàng)建VideoCapture對象VideoCapture m_VideoCapture = null
設(shè)置參數(shù)
配置完成VideoCapture對象,開始錄制視頻
在開始錄制后介衔,你需要通過更新UI或者行為來確焙夼撸可以停止視頻捕獲。在這里我們只輸出log炎咖。
最后我們需要停止視頻捕獲赃泡,可以通過定時器或者其他輸入方式來實現(xiàn)寒波。
一旦停止視頻捕獲,需要及時退出視頻捕獲模式并釋放相機資源升熊。
故障問題解決
·獲取不到分辨率
·? ?? ???確保你在項目中啟用了WebCam能力
·? ?? ???全息圖像無論怎樣設(shè)置都不能捕獲到圖片或者視頻中
·? ?? ???未來的更新會支持捕獲全息圖像