Vuforia圖片識別(Android)

前言

最近公司有AR開發(fā)的需求,需要使用手機掃描圖片顯示出不同的模型,同時模型要有旋轉(zhuǎn)、縮放的功能,提供的框架是Vuforia。那么經(jīng)過一個星期的研究,也算是完成了任務(wù),現(xiàn)在總結(jié)出開發(fā)中遇到的一些坑,具體源碼放在Gitee。

項目地址
https://gitee.com/GrapeM/vuforia_image_recognition


介紹

使用場景:根據(jù)多個模型圖片,手機相機掃描后出現(xiàn)對應(yīng)的模型,需要快速加載出模型,使用的模型都為OBJ模型。
使用技術(shù):Java(不需要JNI)

主要知識點:

  • 替換識別圖片
  • 序列化模型OBJ文件

首先說一下遇到的坑,Vuforia原始的加載模型方法就是一個坑,研究過一段時間的人大概都清楚。它的操作流程大概是這樣的:

  1. 將一個模型文件(OBJ)轉(zhuǎn)化為.h文件
  2. 將.h中的法線、頂點、紋理三個坐標點分別放在三個txt
  3. 讀取解析txt顯示模型。

這一系列讓人窒息的操作不僅僅是麻煩,而且解析txt的再顯示模型的速度是慢的不得了。所以研究了兩天,不得不從新尋找其他方法代替。


替換圖片

開始之前,先準備好一些工作。申請key,替換識別的圖片。

地址:https://developer.vuforia.com/

注冊賬號后點擊:Develop — License Manager — Get Development Key

示意圖

注冊key后在里面可以拿到License Key放在項目的SampleApplicationSession.java中

   Vuforia.setInitParameters(mActivity, mVuforiaFlags,"你的License Key");

設(shè)置key后,點擊 Develop — Target Manager — Add Database 類型是device

在該Database里面點擊 Add Target添加目標圖片,寬度(width)會影響識別出來的模型的穩(wěn)定性(不正確的話模型會明顯抖動)

添加后Download DataBase下載圖片數(shù)據(jù)庫,將里面的dat,xml文件放入項目的assets文件夾中。

添加的圖片質(zhì)量有星級劃分,等級越高越容易識別出來,至于如何評分可以搜索官方文檔,大致概括為“模型與背景的對比度,模型本身的紋理清晰度和復(fù)雜度”。


序列化OBJ模型

之所以要序列化模型文件的原因,是因為加載模型速度實在是太慢,測試10個大概10M的模型,需要加載5分鐘。這樣的速度給客戶使用,估計焦慮癥都可以憋出來。

在此之前首先要從開始說那個原始加載OBJ文件的坑說起,棄用這個方法后我去Github找到了一個項目,是關(guān)于Vuforia與JPCT(加載3D模型框架)結(jié)合的項目。

項目地址:https://github.com/l123456789jy/VuforiaJpct

這個大佬的項目中就有OBJ和MD2格式的加載方法,需要通過JPCT框架的加載OBJ(MD2)的方法就可以簡單實現(xiàn)模型調(diào)用。如果對模型加載速度沒有需求,下載該項目即可。

對的,加載速度沒有要求直接使用JPCT的加載OBJ模型就可以了,對比之前分成三個文件加載簡直不要太方便。但是如果加載多個模型,這個方法的解析速度和原始方法的速度其實是差不多的,這時候便不滿足我項目的需求。

所以我在JPCT官方上找到解決該問題的方法:模型文件序列化。

序列化就是將OBJ等模型文件轉(zhuǎn)化成可以讓JPCT更容易讀取的文件,但該序列化文件操作必須要在電腦端的Java IDE執(zhí)行(如Eclipse),將模型的OBJ,MTL(紋理文件),統(tǒng)一轉(zhuǎn)化成一個ser文件。經(jīng)過序列化的文件加載速度大大提升。(從10個文件的5分鐘的加載時間減少到10秒)

其方法很簡單,代碼也放入項目當中,將轉(zhuǎn)化后的ser文件和模型的貼圖(png/jpg)放入assets中即可。

注:轉(zhuǎn)化ser代碼在項目文件夾“ObjToSer”,測試的目標圖片在“TestImage”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容