資源簡(jiǎn)介
一個(gè)圖片識(shí)別小工具,原先主要是識(shí)別以前公司的軟件注冊(cè)碼截圖里的數(shù)字和字母
(每次要一個(gè)一個(gè)框復(fù)制出來(lái)粘貼到注冊(cè)器里,很麻煩!),
因?yàn)樽?cè)碼出現(xiàn)的字母和數(shù)字基本就那幾個(gè),所以識(shí)別庫(kù)的范圍設(shè)定的比較少。
原理和算法在代碼中做了詳細(xì)說(shuō)明。
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Windows.Forms;
namespace?iamge2text
{
????public?partial?class?FormLicense?:?Form
????{
????????/*
?????????*?開(kāi)發(fā)思路:圖片灰度處理,二進(jìn)制,然后和圖片中的字二進(jìn)制庫(kù)精確對(duì)比
?????????*?
?????????*?獲取字庫(kù):通過(guò)下面代碼中g(shù)enerateLicense(Bitmap?singlepic)方法獲得,具體操作:
?????????*??????從圖片中截圖出(摳出)一個(gè)字符,然后處理得到二維的二進(jìn)制矩陣,比如下面的字符1對(duì)應(yīng)的二維矩陣
?????????*??????00000
?????????*??????00100
?????????*??????11100
?????????*??????00100
?????????*??????00100
?????????*??????00100
?????????*??????00100
?????????*??????00100
?????????*??????00100
?????????*??????11111
?????????*??????00000
?????????*??????00000
?????????*??????
?????????*?注意:【相同字符,比如1,不同字體,字號(hào),不同縮放大小的圖片,獲得到的二位矩陣中0、1排列和數(shù)量都是不同的!
?????????*??????????故按照此方法來(lái)寫(xiě)出匹配所有字的話,那字庫(kù)就大了。。。】
?????????*?
?????????*?
????????*/
????????public?FormLicense()
????????{
????????????InitializeComponent();
????????????buttonGenerate.Enabled?=?false;?????????//在pictureBox控件中無(wú)圖片時(shí)buttonGenerate按鈕不可用
????????????richTextBoxLicense.ReadOnly?=?true;?????//并且不可以在文本框中改動(dòng)輸出后的字符
????????????this.AcceptButton?=?this.buttonOpen;????//回車(chē)鍵作用在打開(kāi)按鈕上
????????}
????????#region?在用的字符對(duì)應(yīng)黑白顏色二進(jìn)制碼的字庫(kù)我的工具中只需要下面的幾個(gè)字符所有不是所有文字都能識(shí)別出來(lái)
????????static?string?stringByte0?=?“000000001100010010100001100001100001100001100001010010001100000000000000“;
????????static?char[]?char0?=?stringByte0.ToCharArray();
????????static?int?BinaryWidth0?=?5?BinaryHeight0?=?11;????//0的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte1?=?“000000010011100001000010000100001000010000100111110000000000“;
????????static?char[]?char1?=?stringByte1.ToCharArray();
????????static?int?BinaryWidth1?=?4?BinaryHeight1?=?11;????//1的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte2?=?“000000111010001100010000100010001000100010001111110000000000“;
????????static?char[]?char2?=?stringByte2.ToCharArray();
????????static?int?BinaryWidth2?=?4?BinaryHeight2?=?11;????//2的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte3?=?“000000111010001100010011000001000011000110001011100000000000“;
????????static?char[]?char3?=?stringByte3.ToCharArray();
????????static?int?BinaryWidth3?=?4?BinaryHeight3?=?11;????//3的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte4?=?“000010000010000110001010010010010010100010011111000010000111000000000000“;
????????static?char[]?char4?=?stringByte4.ToCharArray();
????????static?int?BinaryWidth4?=?5?BinaryHeight4?=?11;????//4的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte5?=?“000001111110000100001111010001000011000110001011100000000000“;
????????static?char[]?char5?=?stringByte5.ToCharArray();
????????static?int?BinaryWidth5?=?4?BinaryHeight5?=?11;????//5的平面像素長(zhǎng)寬(從0開(kāi)始數(shù)起)
????????static?string?stringByte6?=?“000000001111010001100000101110110001100001100001100001011110000000000000“;
????????static?char[]?char6?=?stringByte6.ToCharArray();
????????static?int?BinaryWidth6?=?5?BinaryHeight6?=?11;????//6的平
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????303??2021-01-06?16:08??iamge2text\.git\config
?????文件?????????73??2021-01-06?16:08??iamge2text\.git\desc
?????文件?????????23??2021-01-06?16:08??iamge2text\.git\HEAD
?????文件????????478??2021-01-06?16:08??iamge2text\.git\hooks\applypatch-msg.sample
?????文件????????896??2021-01-06?16:08??iamge2text\.git\hooks\commit-msg.sample
?????文件???????4655??2021-01-06?16:08??iamge2text\.git\hooks\fsmonitor-watchman.sample
?????文件????????189??2021-01-06?16:08??iamge2text\.git\hooks\post-update.sample
?????文件????????424??2021-01-06?16:08??iamge2text\.git\hooks\pre-applypatch.sample
?????文件???????1643??2021-01-06?16:08??iamge2text\.git\hooks\pre-commit.sample
?????文件????????416??2021-01-06?16:08??iamge2text\.git\hooks\pre-merge-commit.sample
?????文件???????1374??2021-01-06?16:08??iamge2text\.git\hooks\pre-push.sample
?????文件???????4898??2021-01-06?16:08??iamge2text\.git\hooks\pre-reba
?????文件????????544??2021-01-06?16:08??iamge2text\.git\hooks\pre-receive.sample
?????文件???????1492??2021-01-06?16:08??iamge2text\.git\hooks\prepare-commit-msg.sample
?????文件???????2783??2021-01-06?16:08??iamge2text\.git\hooks\push-to-checkout.sample
?????文件???????3650??2021-01-06?16:08??iamge2text\.git\hooks\update.sample
?????文件???????3430??2021-01-06?16:08??iamge2text\.git\index
?????文件????????240??2021-01-06?16:08??iamge2text\.git\info\exclude
?????文件????????191??2021-01-06?16:08??iamge2text\.git\logs\HEAD
?????文件????????191??2021-01-06?16:08??iamge2text\.git\logs\refs\heads\master
?????文件????????191??2021-01-06?16:08??iamge2text\.git\logs\refs\remotes\origin\HEAD
?????文件???????2164??2021-01-06?16:08??iamge2text\.git\ob
?????文件??????42839??2021-01-06?16:08??iamge2text\.git\ob
?????文件????????114??2021-01-06?16:08??iamge2text\.git\packed-refs
?????文件?????????41??2021-01-06?16:08??iamge2text\.git\refs\heads\master
?????文件?????????32??2021-01-06?16:08??iamge2text\.git\refs\remotes\origin\HEAD
?????文件??????25600??2021-01-06?16:08??iamge2text\Demo\iamge2text.exe
?????文件??????94902??2021-01-06?16:08??iamge2text\Demo\測(cè)試注冊(cè)碼圖片(圖片不能縮放識(shí)別的字母范圍已經(jīng)定死).bmp
?????文件????????418??2021-01-06?16:08??iamge2text\README.txt
?????文件??????25600??2021-01-06?16:08??iamge2text\源碼\iamge2text\iamge2text\bin\Debug\iamge2text.exe
............此處省略51個(gè)文件信息
- 上一篇:自定義水晶按鈕控件59079
- 下一篇:C# 五子棋(winform源碼)
評(píng)論
共有 條評(píng)論