線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:852
推到 Plurk!
推到 Facebook!

找出包住字元的矩形大小與字元辨識???

尚未結案
huangcc
一般會員


發表:7
回覆:6
積分:2
註冊:2004-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-13 10:55:41 IP:218.172.xxx.xxx 未訂閱
各位前輩好: 我是各BCB的初學者,目前的程度是還在看程式的階段,目前遇到了瓶頸,就是下面這一段程式不懂,努力了很久始終還是無法瞭解,再加上作者已不知去向。SO希望各位前輩能幫小弟的忙,如果懂的話,麻煩說明一下原理。還有,就是sum = 0xffffffff; 及 (sum & 0x00ffffff) 是什麼意思???指的是什麼??? 最後無論結果是如何,小弟先向各位前輩說聲謝謝~!!!謝謝~~~!!! PS:如果還需要補充什麼,請告訴小弟。    字元的矩行大小: 主要是判別IC上的字元大小,步驟是:按下滑鼠左鍵-->拉出矩形,將字元包住-->放開滑鼠左鍵。此時,就會有個方形的矩行將字元包住。  
 
void __fastcall TForm1::findboundary() { int x1,x2,y1,y2,sum,index; int yboundary[500],yupnum,ydownnum,xboundary[500],xleftnum,xrightnum; x1 = 0; x2 = Image2->Picture->Width-1; y1 = 0; y2 = Image2->Picture->Height-1; index = 0; for (int y=y1 1; yCanvas->Pixels[x][y]; if ((sum&0x00ffffff) == 0) yboundary[index ] = 1; else yboundary[index ] = 0; } index = 0; yupnum = 0; ydownnum = 0; for (int y=y1 1; yCanvas->Pixels[x][y]; if ((sum&0x00ffffff) == 0) xboundary[index ] = 1; else xboundary[index ] = 0; } index = 0; xleftnum = 0; xrightnum = 0; for (int x=x1 1; x 字元辨識:
 
char __fastcall TForm1::recognize(int x1,int x2,int y1,int y2) { int sum,sum1,yboundary[500],index; int divx,divy,divz,test_xor[big][Ninp],num[big][2]; float all; x1ax = x1; x2ax = x2; y1ax = y1; y2ax = y2; sum1 = 0xffffffff; for (int x=x1; x<=x2; x ) sum1 = sum1&Image2->Canvas->Pixels[x][y1]; if ( (sum1&0x00ffffff)==0x00ffffff ) { index = 0; for (int y=y1; yCanvas->Pixels[x][y]; if ((sum&0x00ffffff) == 0) yboundary[index ] = 1; else yboundary[index ] = 0; } index = 0; for (int y=y1; yCanvas->Pixels[x][y2]; if ( (sum1&0x00ffffff)==0x00ffffff ) { index = 0; for (int y=y1 1; y<=y2; y ) { sum = 0xffffffff; for (int x=x1; x<=x2; x ) sum = sum&Image2->Canvas->Pixels[x][y]; if ((sum&0x00ffffff) == 0) yboundary[index ] = 1; else yboundary[index ] = 0; } index=0; for (int y=y1 1; y<=y2; y ) { if ((yboundary[index]==1)&&(yboundary[index 1]==0)) { y2ax = y; y = y2 1; } index ; } } //將pattern轉成5*5的樣本,pattern是預設的字元 index = (x2ax-x1ax 1)%5; if (index == 1) x1ax=x1ax 1; else if (index == 2) { x1ax=x1ax 1; x2ax=x2ax-1; } else if (index == 3) { x1ax=x1ax-1; x2ax=x2ax 1; } else if (index == 4) x2ax=x2ax 1; index = (y2ax-y1ax 1)%5; if (index == 1) y1ax=y1ax 1; else if (index == 2) { y1ax=y1ax 1; y2ax=y2ax-1; } else if (index == 3) { y1ax=y1ax-1; y2ax=y2ax 1; } else if (index == 4) y2ax=y2ax 1; divx = (x2ax-x1ax 1)/5; divy = (y2ax-y1ax 1)/5; divz = divx*divy; index = 0; for (int h=0; h<5; h ) for (int i=0; i<5; i ) { all = 0; for (int j=0; jCanvas->Pixels[x1ax k divx*i][y1ax j divy*h]&0x00000001); all = all/divz; if (all num[j 1][1]) { num[0][0] = num[j 1][0]; num[0][1] = num[j 1][1]; } } return standard[num[0][0]]; }
 
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-16 16:46:02 IP:220.135.xxx.xxx 未訂閱
引言: 各位前輩好: 我是各BCB的初學者,目前的程度是還在看程式的階段,目前遇到了瓶頸,就是下面這一段程式不懂,努力了很久始終還是無法瞭解,再加上作者已不知去向。SO希望各位前輩能幫小弟的忙,如果懂的話,麻煩說明一下原理。還有,就是sum = 0xffffffff; 及 (sum & 0x00ffffff) 是什麼意思???指的是什麼??? 最後無論結果是如何,小弟先向各位前輩說聲謝謝~!!!謝謝~~~!!! PS:如果還需要補充什麼,請告訴小弟。 字元的矩行大小: 主要是判別IC上的字元大小,步驟是:按下滑鼠左鍵-->拉出矩形,將字元包住-->放開滑鼠左鍵。此時,就會有個方形的矩行將字元包住。
huangcc你好: 程式很長,請你先把程式整理好。謝謝合作 [code] // BCB, Delphi 的程式碼請包在這裡 [/code]
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-17 17:48:15 IP:218.168.xxx.xxx 未訂閱
引言: 各位前輩好: 我是各BCB的初學者,目前的程度是還在看程式的階段,目前遇到了瓶頸,就是下面這一段程式不懂,努力了很久始終還是無法瞭解,再加上作者已不知去向。SO希望各位前輩能幫小弟的忙,如果懂的話,麻煩說明一下原理。還有,就是sum = 0xffffffff; 及 (sum & 0x00ffffff) 是什麼意思???指的是什麼? 最後無論結果是如何,小弟先向各位前輩說聲謝謝~謝謝! PS:如果還需要補充什麼,請告訴小弟。 字元的矩行大小: 主要是判別IC上的字元大小,步驟是:按下滑鼠左鍵-->拉出矩形,將字元包住-->放開滑鼠左鍵。此時,就會有個方形的矩行將字元包住。
huangcc你好: sum = 0xffffffff; <- 長整數最大值 16進位, sum & 0x00ffffff; <- sum值 and 0x00ffffff,意義為取sum值的最後3個byte sum 0x12345678 and 0x00ffffff ---------------- 0x00345678 至於看懂那個程式,你加油吧
chuanghs
一般會員


發表:7
回覆:9
積分:3
註冊:2004-08-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-20 19:32:18 IP:220.143.xxx.xxx 未訂閱
一般灰階值是0~255,亦即假設為8bit 但彩色表示最多有24bit.....轉為灰階時亦有24bit.... 0x00ffffff...每個f為4bit...... 所以ffffff為24bit..... 懂嗎?????
chuanghs
一般會員


發表:7
回覆:9
積分:3
註冊:2004-08-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-20 20:05:25 IP:220.143.xxx.xxx 未訂閱
你確定你的系統只有8bit的話 你就可以用sum & 0x0000ff 此時ff--->亮,亦即沒有字的地方
系統時間:2024-05-21 0:59:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!