www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] //========================================================================//TITLE:// 漫談WinCE的手寫識別技術(一)//AUTHOR:// norains//DATE:// Wednesday 24-Janua

 //========================================================================

//TITLE:

// 漫談WinCE的手寫識別技術(一)

//AUTHOR:

// norains

//DATE:

// Wednesday 24-January -2007

//Environment:

// EVC4.0 + Standard SDK

//========================================================================

WinCE從4.0開始,集成了手寫識別輸入法,可以識別繁體中文,日文和韓文.因此如果在WinCE下采用相應的API函數(shù)重寫上述三種語言的手寫識別輸入似乎顯得多此一舉.但多余并不代表沒有了解的價值,今天,就讓我們抽絲剝繭來探究WinCE下的手寫識別吧!

大體上來說,調(diào)用WinCE自帶的識別引擎進行文字識別需要經(jīng)過如下十個步驟:

1.調(diào)用HwxConfig ()函數(shù)初始化識別引擎.在每個應用程序中,該初始化只需要調(diào)用一次.

2.調(diào)用HwxCreate()創(chuàng)建識別引擎句柄.

函數(shù)原型為:HRC HwxCreate(HRC hrc).該函數(shù)有個形參hrc,保存的是已存在的識別引擎句柄.如果傳入該形參,則可以根據(jù)已存在的引擎的設置來創(chuàng)建新的識別引擎.當然通常情況下我們僅僅是創(chuàng)建一個新的引擎,所以該函數(shù)更多情況下是不使用形參:

3.調(diào)用HwxSetGuide()函數(shù)來設置識別框的范圍.

設置該識別框范圍的重要性不言而喻,因為如果設置不恰當,則直接導致識別出錯甚至無法識別.

該函數(shù)傳入的形參是一個HWXGUIDE結(jié)構(gòu),該結(jié)構(gòu)包含了識別框的一切信息:

typedef struct tagHWXGUIDE {

UINT cHorzBox;

UINT cVertBox;

INT xOrigin;

INT yOrigin;

UINT cxBox;

UINT cyBox;

UINT cxOffset;

UINT cyOffset;

UINT cxWriting;

UINT cyWriting;

UINT cyMid;

UINT cyBase;

UINT nDir;

} HWXGUIDE, *PHWXGUIDE;

如果用文字來描述各個形參的含義,我實在沒這個能力讓語言讀起來不覺得乏味,所以最簡單最直接最直觀的方法,我還是用圖片來標識出各個參數(shù)的含義,至少應該不會讓腦袋覺得發(fā)暈:

xOriginy,Origin分別定義了識別框的起始坐標,而cxBox,cyBox則分別定義了識別框的長度和寬度.需要注意的是,這四個參數(shù)是以屏幕坐標為基準,如果我們獲得的是應用程序窗口的坐標,在賦值之前,我們需要調(diào)用MapWindowPoints()進行轉(zhuǎn)換.當然,相同的道理也同樣運用于該結(jié)構(gòu)的其它形參.

nDir定義了書寫的順序,我們一般使用HWX_HORIZONTAL,表明書寫方式是水平書寫.當然,如果有特殊要求,我們還可以設置HWX_BIDIRECTIONAL或HWX_VERTICAL.

4.調(diào)用HwxALCValid()和HwxALCPriority()定義識別的標準.

HwxALCValid()用來定義識別字符的范圍,HwxALCPriority()則是定義返回字符的優(yōu)先級.

根據(jù)幫助文檔,可以識別的字符文字為:簡體中文,繁體中文,日文,韓文和英文.但在實際使用中,卻是無法正確識別簡體中文,這不能不說是一個遺憾.在平時應用中,我們一般只需識別一種文字,此時我們可以只是簡單地設置HwxALCValid()即可:

HwxALCValid(hrc,ALC_KANJI_ALL); //識別漢字

5.調(diào)用HwxSetContext()設置前文,提高文字識別率.如果沒有前文,可以不調(diào)用該函數(shù).

6.調(diào)用HwxInput()加入文字筆畫.如果文字是多筆畫,則應多次調(diào)用該函數(shù).

函數(shù)原型是:

BOOL HwxInput(

HRC hrc,

POINT* lppnt,

UINT upoints,

DWORD timestamp

);

lppnt是輸入的筆畫坐標,upoints是坐標的個數(shù),和HWXGUIDE的參數(shù)一樣,這里的坐標也是屏幕坐標系.timestamp是時間,一般情況下,我們可以設置為0.

需要注意的是,如果是多筆畫的文字,最好不要一次性將所有筆畫點陣通過HwxInput()輸入,否則最后的識別結(jié)果將會大相徑庭.因為識別引擎是一筆一劃進行輸入識別的,如果多筆畫文字一次性輸入,引擎可能將所有筆畫當成一個筆畫,從而導致識別結(jié)果異常不準確.

7.調(diào)用HwxEndInput()告知引擎筆畫輸入結(jié)束,即將要進行識別部分.

8.調(diào)用HwxProcess()讓引擎進行識別處理.

9.調(diào)用HwxResultsAvailable()獲取識別的字符數(shù).

根據(jù)文檔,HwxResultsAvailable()返回識別的字符數(shù).然而在WinCE4.2中,調(diào)用hwxcht.dll的話,任何時候都是返回為0值,即使之后的函數(shù)能返回識別字符也依然如此.文檔中描述,該函數(shù)如果返回的是-1,則代表調(diào)用失敗,其它值代表可供使用的字符數(shù).也許是WinCE4.2下識別引擎不完善的緣故,該函數(shù)根本沒有發(fā)揮文檔所描述的作用.

10.調(diào)用HwxGetResults()獲取結(jié)果.

INT32 HwxGetResults(

HRC hrc,

UINT cAlt,

UINT iFirst,

UINT cBoxRes,[!--empirenews.page--]

HWXRESULTS* rgBoxResults

);

初看起來,該函數(shù)形參似乎特別復雜,但實際上并非如此.

根據(jù)文檔,cAlt是期望的輪流返回的字符,iFirst是想要返回字符的索引,cBoxRes是返回的字符個數(shù).但實際上,cAlt起主導作用,比如說cBoxRes設置為1,而cAlt設置為10,則返回的字符個數(shù)依然為10.所以我在平常使用中,一般是將iFirst設為0,cBoxRes設為1,而cAlt設為所需返回的字符個數(shù).

rgBoxResults指向儲存字符的緩沖區(qū).不過,返回結(jié)果比較有意思,除了第一個rgBoxResults以外的所有結(jié)構(gòu)的indxBox成員都儲存了返回字符.

比如返回五個字符‘與子于飛干‘,則rgBoxResults的數(shù)組列數(shù)值為:

rgBoxResults[0].indxBox : 0

rgBoxResults[0].rgChar[0] : ‘與‘

rgBoxResults[1].indxBox : ‘子‘

rgBoxResults[1].rgChar[0] : ‘于‘

rgBoxResults[2].indxBox : ‘飛‘

rgBoxResults[2].rgChar[0] : ‘干‘

11.調(diào)用 HwxDestroy()銷毀引擎,本次識別過程結(jié)束.如果需要繼續(xù)識別文字,從步驟2重新開始.

本站聲明: 本文章由作者或相關機構(gòu)授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉