可以使用OpenCV提供cvFindContours對先前與處理得到的光斑畫面進(jìn)行輪廓提取
發(fā)布時間:2013/11/10 18:05:52 訪問次數(shù):5858
cvFindContours對先前與處理得到的光斑畫面進(jìn)行輪廓提取,AT34C02進(jìn)而求懈出每個光斑區(qū)域在圖像中的位置,如圖27所示。進(jìn)一步,我們通過質(zhì)心法并以光斑亮度作為權(quán)重,可以大致求解出每個指尖中心的大致坐標(biāo)。雖然這個中心坐標(biāo)未毖真的在指尖中心,但相比簡單的以光斑區(qū)域中心作為指尖中心的方法耍精確很多。
目前OpenCV中提供了Kd-tree的實現(xiàn),不過我在使用過程中遇到了諸多問題,尤其是它可能會導(dǎo)致程序崩潰,因此我使用了由Martin F Krafft開發(fā)的基于C++模板的Kd -tree實現(xiàn)libkdt-ee++。
得到鍵盤圖案坐標(biāo)的另一個好處是可以在PC上重新繪制出一個軟鍵盤,用于提示當(dāng)前“按下”的按鍵,提高使用體驗,如圖32所示。
在得到用戶按下鍵盤按鍵的信息后,就要考慮將這些按鍵注入到當(dāng)前的系統(tǒng)中,使得我們的投影鍵盤能夠作為一個真正的鍵盤來使用。這里我沒有采用最直接的編寫系統(tǒng)驅(qū)動程序的辦法,雖然那樣性能最好、最直接,但會額外增加制作時間。我采用Windows系統(tǒng)提供的SendlnputAP|向系統(tǒng)注入鍵盤事件。
該APi允許應(yīng)用程序向整個系統(tǒng)注入任意的鍵盤事件,在實際效果上,已經(jīng)和編寫驅(qū)動程序的效果沒有區(qū)別,像系統(tǒng)輸入法等特性也可以很好地支持,如圖33所示。另外,這樣做也可以保證我們所有的處理程序都在用戶態(tài)模式運行,可以很容易地把我們的代碼移植到Mac OS或者Linux下運行。
不過前面我們得到的按下按鍵信息還不能直接注入到系統(tǒng),跡需要額外處理如下兩件邏輯:模擬組合鍵、模擬連發(fā)事件。
對于組合鍵的模擬其實比較容易,一方面我們的設(shè)計可以保證多按鍵同時輸入,對于Ct一十C這樣的組合鍵,不需要做額外處理,只要將當(dāng)前的實際按鍵傳輸給os即可。而對于鍵盤的功能鍵,比如Fn+Fl這種特殊用途的按鍵,就需要編寫程序特殊實現(xiàn)。
對于連發(fā)事件,os就沒有提供什么特殊幫助了,需要我們自己來模擬。
cvFindContours對先前與處理得到的光斑畫面進(jìn)行輪廓提取,AT34C02進(jìn)而求懈出每個光斑區(qū)域在圖像中的位置,如圖27所示。進(jìn)一步,我們通過質(zhì)心法并以光斑亮度作為權(quán)重,可以大致求解出每個指尖中心的大致坐標(biāo)。雖然這個中心坐標(biāo)未毖真的在指尖中心,但相比簡單的以光斑區(qū)域中心作為指尖中心的方法耍精確很多。
目前OpenCV中提供了Kd-tree的實現(xiàn),不過我在使用過程中遇到了諸多問題,尤其是它可能會導(dǎo)致程序崩潰,因此我使用了由Martin F Krafft開發(fā)的基于C++模板的Kd -tree實現(xiàn)libkdt-ee++。
得到鍵盤圖案坐標(biāo)的另一個好處是可以在PC上重新繪制出一個軟鍵盤,用于提示當(dāng)前“按下”的按鍵,提高使用體驗,如圖32所示。
在得到用戶按下鍵盤按鍵的信息后,就要考慮將這些按鍵注入到當(dāng)前的系統(tǒng)中,使得我們的投影鍵盤能夠作為一個真正的鍵盤來使用。這里我沒有采用最直接的編寫系統(tǒng)驅(qū)動程序的辦法,雖然那樣性能最好、最直接,但會額外增加制作時間。我采用Windows系統(tǒng)提供的SendlnputAP|向系統(tǒng)注入鍵盤事件。
該APi允許應(yīng)用程序向整個系統(tǒng)注入任意的鍵盤事件,在實際效果上,已經(jīng)和編寫驅(qū)動程序的效果沒有區(qū)別,像系統(tǒng)輸入法等特性也可以很好地支持,如圖33所示。另外,這樣做也可以保證我們所有的處理程序都在用戶態(tài)模式運行,可以很容易地把我們的代碼移植到Mac OS或者Linux下運行。
不過前面我們得到的按下按鍵信息還不能直接注入到系統(tǒng),跡需要額外處理如下兩件邏輯:模擬組合鍵、模擬連發(fā)事件。
對于組合鍵的模擬其實比較容易,一方面我們的設(shè)計可以保證多按鍵同時輸入,對于Ct一十C這樣的組合鍵,不需要做額外處理,只要將當(dāng)前的實際按鍵傳輸給os即可。而對于鍵盤的功能鍵,比如Fn+Fl這種特殊用途的按鍵,就需要編寫程序特殊實現(xiàn)。
對于連發(fā)事件,os就沒有提供什么特殊幫助了,需要我們自己來模擬。
熱門點擊
- 藍(lán)牙模塊的功能和參數(shù)設(shè)置
- CMOS或非門電路
- 可以使用OpenCV提供cvFindCont
- 有源鉗位電路
- 科學(xué)記數(shù)法和工程記數(shù)法
- 可編程邏輯陣列(PLA)
- 介電常數(shù)
- 非平衡的惠斯通電橋
- 助聽器(放大電路)
- 常用ADC
推薦技術(shù)資料
- 頻譜儀的解調(diào)功能
- 現(xiàn)代頻譜儀在跟蹤源模式下也可以使用Maker和△Mak... [詳細(xì)]
- 高速、單電源、軌到軌高通量放大
- 24位或16位模數(shù)轉(zhuǎn)換器(ADC0)
- 低功率、低噪聲、雙極輸入音頻運算放大器應(yīng)用
- 步進(jìn)電機控制器DRV8824
- 精密可編程24.
- 集成混合信號片上系統(tǒng)MCUC8
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究