画像から文字を認識することができました。この理由のために:C#画像認識性能 - 画像リストと画像辞書を比較する
私はリスト
Bitmap bpt1 = new Bitmap(@"C:\2\torec1.png", true);
Bitmap bpt2 = new Bitmap(@"C:\2\torec2.png", true);
List<Bitmap> toRecognize = new List<Bitmap>();
toRecognize.Add(bpt1);
toRecognize.Add(bpt2);
内のすべての認識の塊(画像)を保存私は辞書で知られている文字のライブラリーを保ちます。
var target = dict.ToList();
や画像の比較を行う:(ターゲット[インデックス] .KEY、ターゲット[インデックス] .Valueの)
をライブラリから - その後 Bitmap le = new Bitmap(@"C:\2\e.png", true);
Bitmap lg = new Bitmap(@"C:\2\g.png", true);
Bitmap ln = new Bitmap(@"C:\2\n.png", true);
Bitmap li = new Bitmap(@"C:\2\i.png", true);
Bitmap ls = new Bitmap(@"C:\2\s.png", true);
Bitmap lt = new Bitmap(@"C:\2\t.png", true);
var dict = new Dictionary<string, Bitmap>();
dict.Add("e", le);
dict.Add("g", lg);
dict.Add("n", ln);
dict.Add("i", li);
dict.Add("s", ls);
dict.Add("t", lt);
私がイメージして新しいリストを作成します
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
if (CompareMemCmp(toRecognize[i], target[j].Value) == true)
{
textBox3.AppendText("Found!" + Environment.NewLine);
textBox2.AppendText(target[j].Key); //Letter is found - save it!
}
else {textBox3.AppendText("Don't match!" + Environment.NewLine); }
}
}
1. [削除]
2です。私はパフォーマンスの観点から耐えられる方法を使用しましたか?私は同時に10-20の画像の修復を計画しています(それぞれの平均文字数は8です)。文字のライブラリは英語のアルファベット(26大文字+26小文字)、特殊文字(〜 10)と数字(10)。
私は認識されなければならない80以上の文字と~70 +文字で構成されるパターンライブラリを持っています。パフォーマンスは良いレベルになるのでしょうか?
喜んで受け入れられています。 ;)
break;ループが壊れて2番目の質問が残る – Alex
イメージ認識を行うには、巨大な並列コンピューティングハードウェアが必要です。 OpenCVは、このような種類のタスクによく使用されるライブラリです。高度に最適化されたSIMDコードは、そのようなハードウェアに似ています。 Emguは.NETラッパーです。 http://www.emgu.com/wiki/index.php/Main_Page –
C#がパフォーマンスのボトルネックの原因になることはありません。これは単一のCPU上で行うことができますが、GPU実装を動かすことで*ロット*(速さのように)速くなります。 Cloo OpenCLライブラリを見てください。 –