この場合、何を開始すればよいかわかりません。次の tiff 画像から赤いブロック画像を抽出する必要があります。
抽出後、グラフを読み取って、次のように出力を取得する必要があります。どのアルゴリズムを使用する必要がありますか?プログラミング言語として C# を使用しています
この場合、何を開始すればよいかわかりません。次の tiff 画像から赤いブロック画像を抽出する必要があります。
抽出後、グラフを読み取って、次のように出力を取得する必要があります。どのアルゴリズムを使用する必要がありますか?プログラミング言語として C# を使用しています
多分MODIがあなたを助けます:
http://www.codeproject.com/Articles/29172/Converting-Images-to-Text-using-Office-2007-OCR-Op
更新しました:
あなたは正しく試したと思います(AForge.net)。AForge.Math.Geometry.SimpleShapeChecker クラスを使用すると、すべての長方形が見つかります。もう一度やり直します。
更新しました
Aforge.net を使用すると、2 つの画像を比較できます。あなたの問題では、各セルの元の空のセル(標準セル)と比較する必要があります。類似度の順に並べると、最初の 24 個のセル (最も類似していないセル) が必要になります。
このような:
private void ProccessBitmap(Bitmap img, Bitmap original_cell)
{
int cellWidth = img.Width / 24;
int cellHeight = img.Height / 4;
IList<KeyValuePair<float, Rectangle>> table = new List<KeyValuePair<float, Rectangle>>();
Bitmap cell;
Rectangle rect;
AForge.Imaging.ExhaustiveTemplateMatching tm = new AForge.Imaging.ExhaustiveTemplateMatching(0);
for (int rowIndex = 0; rowIndex < 4; rowIndex++)
{
for (int colIndex = 0; colIndex < 24; colIndex++)
{
rect = new Rectangle(colIndex * cellWidth, rowIndex * cellHeight, cellWidth, cellHeight);
cell = img.Clone(rect, img.PixelFormat);
var matchings = tm.ProcessImage(original_cell, cell);
table.Add(new KeyValuePair<float, Rectangle>(matchings[0].Similarity, rect));
cell.Dispose();
}
}
using (Graphics gr = Graphics.FromImage(img))
{
gr.DrawRectangles(new Pen(Color.Red, 3.0f), table.OrderBy(a => a.Key).Take(24).Select(a => a.Value).ToArray());
}
pictureBox1.Image = img;
}