本發(fā)明涉及AR技術(shù)領(lǐng)域,具體涉及基于opencv和easyar的虛擬按鍵觸發(fā)方法。
背景技術(shù):
增強現(xiàn)實技術(shù)(Augmented Reality,簡稱AR),是一種將真實世界信息和虛擬世界信息“無縫”集成的新技術(shù),是把原本在現(xiàn)實世界的一定時間空間范圍內(nèi)很難體驗到的實體信息(視覺信息,聲音,味道,觸覺等),通過電腦等科學(xué)技術(shù),模擬仿真后再疊加,將虛擬的信息應(yīng)用到真實世界,被人類感官所感知,從而達(dá)到超越現(xiàn)實的感官體驗。真實的環(huán)境和虛擬的物體實時地疊加到了同一個畫面或空間同時存在。增強現(xiàn)實技術(shù),不僅展現(xiàn)了真實世界的信息,而且將虛擬的信息同時顯示出來,兩種信息相互補充、疊加。在視覺化的增強現(xiàn)實中,用戶利用頭盔顯示器,把真實世界與電腦圖形多重合成在一起,便可以看到真實的世界圍繞著它?,F(xiàn)有的AR主要通過手機與現(xiàn)實互動,互動方式單一。
為了增強AR中與現(xiàn)實的互動性,申請人提出了在AR產(chǎn)品中植入虛擬按鍵的概念,使得用戶通過點擊現(xiàn)實空間中虛擬按鍵對應(yīng)的空間,便能觸發(fā)與虛擬按鍵關(guān)聯(lián)的操作。這就要求AR產(chǎn)品能夠?qū)κ植康奈恢眠M(jìn)行識別?,F(xiàn)有的用于AR領(lǐng)域中的手部識別技術(shù)均通過訓(xùn)練文件搜索手部所處的區(qū)域,從而得到手部的位置。但是現(xiàn)有的準(zhǔn)確性高的訓(xùn)練文件具有如下缺點:一是樣本量過大,導(dǎo)致制作手部訓(xùn)練文件的成功率低消耗時間成本較高。二是訓(xùn)練文件運行時占用內(nèi)存過大,導(dǎo)致在手機上運作會過卡或者識別過慢。對于效率較高的訓(xùn)練文件,它雖然能夠快速判斷出人手的位置,但是由于其準(zhǔn)確性較低,其往往會誤判出一堆被誤識別為手的區(qū)域。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供一種運算量低、快速、應(yīng)用于AR領(lǐng)域中的基于opencv和easyar的虛擬按鍵觸發(fā)方法。
基于opencv和easyar的虛擬按鍵觸發(fā)方法,包括以下步驟:
S1:標(biāo)定:在easyar中預(yù)設(shè)有標(biāo)定物目標(biāo);easyar實時獲取攝像頭拍攝得到的圖片信息;
S2:采樣:當(dāng)easyar通過攝像頭搜索到與標(biāo)定物目標(biāo)相匹配的標(biāo)定物時,利用opencv的訓(xùn)練文件訓(xùn)練手部生成的xml得到誤判區(qū)域,記錄取樣時間內(nèi)經(jīng)過預(yù)設(shè)的虛擬按鍵位置的誤判區(qū)域的數(shù)量,定義為初始數(shù)量;
S3:跟蹤識別:easyar實時跟蹤標(biāo)定物,利用opencv的訓(xùn)練文件訓(xùn)練手部生成的xml得到誤判區(qū)域,并統(tǒng)計每個取樣時間內(nèi)經(jīng)過預(yù)設(shè)的虛擬按鍵位置的誤判區(qū)域的數(shù)量,當(dāng)該數(shù)量大于初始數(shù)量時,運行與虛擬按鍵關(guān)聯(lián)的操作。
優(yōu)選地,所述步驟S1中的標(biāo)定物目標(biāo)為預(yù)先輸入的標(biāo)定物圖片。
優(yōu)選地,所述easyar在Unity編輯器中設(shè)定所述標(biāo)定物目標(biāo)。
優(yōu)選地,所述誤判區(qū)域的數(shù)據(jù)類型為CVRect。
優(yōu)選地,在所述攝像頭的成像區(qū)域內(nèi)還設(shè)有提示區(qū)域;在所述步驟S2中的采樣過程中,提示區(qū)域用于輸出顯示有禁止手放入的提示信息。
優(yōu)選地,所述步驟S3中還包括有:在easyar實時跟蹤標(biāo)定物的過程中,當(dāng)easyar檢測到標(biāo)定物投射在應(yīng)用程序中的世界坐標(biāo)位移大于預(yù)設(shè)的可抖動距離時,返回步驟S2。
優(yōu)選地,所述步驟S3中easyar采用Augment方法實時跟蹤標(biāo)定物。
由上述技術(shù)方案可知,本發(fā)明提供的基于opencv和easyar的虛擬按鍵觸發(fā)方法,采取了一個折中的處理,采用現(xiàn)有的效率較高的訓(xùn)練文件對手部進(jìn)行訓(xùn)練,并將訓(xùn)練結(jié)果進(jìn)行二次運算,從而識別手的位置,降低對準(zhǔn)確性要求高的訓(xùn)練文件制作的標(biāo)準(zhǔn),運算量低,快速。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。在所有附圖中,類似的元件或部分一般由類似的附圖標(biāo)記標(biāo)識。附圖中,各元件或部分并不一定按照實際的比例繪制。
圖1為本發(fā)明的方法中,easyar搜索到的標(biāo)定物的示意圖。
圖2為本發(fā)明的方法中,opencv采樣時得到誤判區(qū)域的示意圖。
圖3為本發(fā)明的方法中,當(dāng)手點擊虛擬按鍵對應(yīng)的空間時,利用opencv得到誤判區(qū)域的示意圖。
圖中,1-誤判區(qū)域,2-虛擬按鍵,3-手的真實區(qū)域。
具體實施方式
下面將結(jié)合附圖對本發(fā)明技術(shù)方案的實施例進(jìn)行詳細(xì)的描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,因此只作為示例,而不能以此來限制本發(fā)明的保護(hù)范圍。
需要注意的是,除非另有說明,本申請使用的技術(shù)術(shù)語或者科學(xué)術(shù)語應(yīng)當(dāng)為本發(fā)明所屬領(lǐng)域技術(shù)人員所理解的通常意義。
實施例:
基于opencv和easyar的虛擬按鍵觸發(fā)方法,包括以下步驟:
S1:標(biāo)定:在easyar中預(yù)設(shè)有標(biāo)定物目標(biāo);easyar實時獲取攝像頭拍攝得到的圖片信息;
S2:采樣:當(dāng)easyar通過攝像頭搜索到與標(biāo)定物目標(biāo)相匹配的標(biāo)定物時,利用opencv的訓(xùn)練文件訓(xùn)練手部生成的xml得到誤判區(qū)域1,記錄取樣時間內(nèi)經(jīng)過預(yù)設(shè)的虛擬按鍵位置的誤判區(qū)域的數(shù)量,定義為初始數(shù)量;
S3:跟蹤識別:easyar實時跟蹤標(biāo)定物,利用opencv的訓(xùn)練文件訓(xùn)練手部生成的xml得到誤判區(qū)域1,并統(tǒng)計每個取樣時間內(nèi)經(jīng)過預(yù)設(shè)的虛擬按鍵2位置的誤判區(qū)域的數(shù)量,當(dāng)該數(shù)量大于初始數(shù)量時,運行與虛擬按鍵關(guān)聯(lián)的操作。
opencv的全稱是:Open Source Computer Vision Library。opencv是一個跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上。它是由一系列C函數(shù)和少量C++類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。本方法中使用到的opencv內(nèi)部函數(shù)如:cvtColor、equalizeHist、detectMultiScale等,配合訓(xùn)練文件使用,實現(xiàn)手部識別功能。誤判區(qū)域是opencv訓(xùn)練文件對手部進(jìn)行訓(xùn)練后判斷為手的區(qū)域,其中包括錯誤判斷區(qū)域和正確判斷區(qū)域,之所以會有錯誤判斷區(qū)域是訓(xùn)練文件在制作時,為了提高訓(xùn)練的效率,降低了訓(xùn)練的準(zhǔn)確度造成的。誤判區(qū)域的數(shù)據(jù)類型為CVRect。
easyar是Easy Augmented Reality的縮寫,easyar于增強現(xiàn)實(AR)互動營銷技術(shù)和解決方案,服務(wù)遍布手機app互動營銷,戶外大屏幕互動活動,網(wǎng)絡(luò)營銷互動等領(lǐng)域,包括運用于網(wǎng)絡(luò)推廣,消費品,發(fā)布會,零售,主題公園及博物館上。
如圖1-3所示,圖1為easyar搜索到的與標(biāo)定物目標(biāo)相匹配的標(biāo)定物,其中,標(biāo)定物目標(biāo)為預(yù)先輸入的標(biāo)定物圖片,針對本實施例而言,標(biāo)定物目標(biāo)就是如圖1所示的圖片,通過easyar在Unity編輯器中設(shè)定。
當(dāng)easyar第一次搜索到與標(biāo)定物目標(biāo)相匹配的標(biāo)定物時,如圖2所示,opencv在采樣過程中得到9個誤判區(qū)域,此時取樣時間內(nèi)經(jīng)過預(yù)設(shè)的虛擬按鍵2位置的誤判區(qū)域的數(shù)量為2個,即初始數(shù)量為2。在所述攝像頭的成像區(qū)域內(nèi)還設(shè)有提示區(qū)域;在所述步驟S2中的采樣過程中,提示區(qū)域用于輸出顯示有禁止手放入的提示信息。禁止手放入的提示信息用于提醒使用者此時不要將手放入攝像頭的成像區(qū)域中。當(dāng)有手點擊現(xiàn)實空間中虛擬按鍵所對應(yīng)的空間時,標(biāo)定物投射在攝像頭的圖片如圖3所示,其中3為手的真實區(qū)域,即手的真正位置。此時利用opencv的xml得到10個誤判區(qū)域,其中經(jīng)過預(yù)設(shè)的虛擬按鍵2位置的誤判區(qū)域的數(shù)量為3個,包括1個手的真實區(qū)域。由于誤判區(qū)域既包括了誤判的區(qū)域,也包括了手的真實區(qū)域。所以當(dāng)真實有手點擊虛擬按鍵對應(yīng)的空間時,檢測到的經(jīng)過預(yù)設(shè)的虛擬按鍵位置的誤判區(qū)域的數(shù)量自然大于初始數(shù)量,本發(fā)明正是利用該原理來識別手部位置,采取了一個折中的處理,采用現(xiàn)有的效率較高的訓(xùn)練文件對手部進(jìn)行訓(xùn)練,并對訓(xùn)練結(jié)果進(jìn)行二次運算,從而識別手的位置,降低對準(zhǔn)確性要求高的訓(xùn)練文件制作的標(biāo)準(zhǔn),使得該方法在PC或手機中運行最流暢,識別速度最快并且誤判斷的區(qū)域較少,運算量低,快速,能夠廣泛應(yīng)用于AR領(lǐng)域。
為防止有些情況下,虛擬按鍵設(shè)定的位置過于靠近標(biāo)定物的邊角,導(dǎo)致除標(biāo)定物以外的可變環(huán)境影響opencv的訓(xùn)練結(jié)果,使得跟蹤識別過程中opencv沒有識別到手的真實區(qū)域,所以本發(fā)明opencv只允許對標(biāo)定物范圍內(nèi)出現(xiàn)的區(qū)域進(jìn)行訓(xùn)練。
所述步驟S3中easyar采用Augment實時跟蹤標(biāo)定物。因為標(biāo)定物在應(yīng)用程序中投射出來的世界坐標(biāo)是移動的,所以投射坐標(biāo)的位移距離就是應(yīng)用程序載體的抖動距離。因此,所述步驟S3中還包括有:在easyar實時跟蹤標(biāo)定物的過程中,當(dāng)easyar檢測到標(biāo)定物投射在應(yīng)用程序中的世界坐標(biāo)位移大于預(yù)設(shè)的可抖動距離時,此時認(rèn)為應(yīng)用程序載體發(fā)生較大的位移,應(yīng)重新對標(biāo)定位進(jìn)行采樣,返回步驟S2。Easyar在跟蹤標(biāo)定物的過程中,一直監(jiān)聽包括有手的真是區(qū)域的所有誤判區(qū)域。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。