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