資源描述:
《紅外激光鍵盤的原理總結(jié)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、....而且現(xiàn)在有了強大的opencv圖像處理庫,實現(xiàn)這樣的虛擬激光投射鍵盤變得易如反掌。投影鍵盤的基本原理。鍵盤由三個主要部件組成:攝像頭、鍵盤圖案投射器、一字線性感應(yīng)激光頭。見下圖:參考.學(xué)習(xí)....圖上從上到下分別是鍵盤圖案投射器、攝像頭、一字線性感應(yīng)激光頭。當(dāng)然,攝像頭放在鍵盤圖案投射器上面也是可以的,比如。1.鍵盤圖案投射器在平坦的桌面投出清晰鍵盤圖案2.最底下的一字線性激光(一般采用紅外線的,這樣眼睛不可見)發(fā)出一字型激光,平行于桌面射出,這樣如果手指有按鍵活動,會在手指上形成激光光斑3.攝像頭捕獲激光光斑,對應(yīng)于鍵盤圖案映射的位置,就可以知
2、道哪些鍵被按下OK,原理很簡單,剩下的關(guān)鍵就是攝像頭的圖像處理算法了,而且現(xiàn)在有了opencv,實現(xiàn)也不是難事。這里說一下實現(xiàn)方法。由于人眼對激光的反應(yīng)不一樣,780nm-808nm的激光人眼不敏感,可看到微弱的一絲紅光。850nm至1064nm波長人眼不可見,通過紅外感光儀器等專業(yè)設(shè)備可以看到,其中808-850nm通過攝像頭可以看到。980-1064nm通過倍頻片可以看到。所以我在網(wǎng)上買了一個808nm-810nm紅外一字線激光器。這樣配上濾光片,可以濾去絕大多數(shù)其他波長的雜光,只剩下紅外激光的光斑。參考.學(xué)習(xí)....這樣做的好處是減少干擾,增加鍵盤
3、的可靠性,而且使算法處理更加簡單有效。加上前面的650nm虛擬鍵盤激光組件,總共也就花了100塊錢左右。25mw808nm-810nm紅外一字線激光器激光頭直徑18mm可見光截止400-750nm濾光片,800-1000nm高透在攝像頭上看到的紅外激光光斑投射到手指的圖像如下圖:參考.學(xué)習(xí)....對于光斑的跟蹤我找了個現(xiàn)成的opencv擴展庫cvblob,具體可以參考它的文檔和例子,googlecode上有這個項目的托管。待會兒會奉上代碼。cvblob可以跟蹤多個光斑,所以很容易就可以實現(xiàn)ctrl+alt+delete之類的組合鍵。再來兩張鍵盤圖:參考.
4、學(xué)習(xí)....參考.學(xué)習(xí)....順便說一句,本文中的攝像頭放的位置只能捕捉到部分鍵盤圖像,所以demo只是演示了部分鍵盤的按鍵。參考.學(xué)習(xí)....不過絲毫不影響原理介紹。如果要獲得全部鍵盤圖像,或者去買一個廣角的攝像頭,或者把這個攝像頭位置提高,不是什么難事。時間有限,不想折騰了。代碼:#include#include#include"opencv/cv.h"#include"opencv/highgui.h"#include"cvblob.h"usingnamespacecvb;參考.學(xué)習(xí)....typedefstr
5、uctkey{charc;intx0;inty0;intx1;inty1;};keyg_keymap[]={{'4',525,350,588,419},{'5',442,345,504,414},{'6',360,339,422,408},{'7',277,332,342,404},{'8',198,327,259,399},{'9',121,320,174,389},{'0',41,318,94,383},{'E',528,274,590,337},{'R',443,267,507,332},{'T',359,263,428,327},{'Y',280
6、,259,344,321},{'U',199,251,261,315},參考.學(xué)習(xí)....{'I',119,246,179,307},{'O',41,240,96,301},{'D',504,203,567,259},{'F',424,199,489,257},{'G',348,194,410,251},{'H',266,187,329,245},{'J',192,183,251,241},{'K',117,178,171,236},{'L',42,174,92,229},{'X',543,144,605,197},{'C',467,139,530,19
7、1},{'V',392,135,457,190},{'B',316,128,377,181},{'N',242,124,299,176},{'M',171,118,225,172},{'<',98,114,149,166},{'>',26,108,73,159},{'_',182,62,531,127},};intg_key_num=sizeof(g_keymap)/sizeof(key);參考.學(xué)習(xí)....intmain(){CvTrackstracks;cvNamedWindow("red_object_tracking",CV_WINDOW_AUT
8、OSIZE);CvCapture*capture=cvCaptureFromCA