我有許多字母的圖案圖像字典,我也有一個必須被識別的位圖! 「兩個」圖像的高度是相同的!一些圖案圖像具有不同的寬度。在另一個圖像中檢測一個圖像並返回它的值
如何迭代X軸並識別模式中的字母?
現在,我使用此功能檢查,如果X位圖列中有黑色像素:
static Boolean GetColumnState(Bitmap bmp, int x)
{
BitmapData pixelData = bmp.LockBits(
new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
Boolean state = false;
unsafe
{
int* pData = (int*)pixelData.Scan0.ToPointer();
pData += x;
for (int i = 0; i < bmp.Height; ++i)
{
pData += bmp.Width;
if (Color.FromArgb(*pData) == Color.FromArgb(255, 0, 0, 0))
{
state = true;
break;
//pixelColumn[i] = Color.FromArgb(*pData);
}
}
}
bmp.UnlockBits(pixelData);
return state;
}
如果CulumnState()返回true,那麼我裁剪尺寸相同圖案的圖像圖像和比較它們。
int y = target.Count;
for (int i = 0; i < b1.Width; i++)
{
if (GetColumnState(b1, i + count) == true)
{
int trWidth = target[5].Value.Width;
int trHeight = target[5].Value.Height;
Bitmap bitm = new Bitmap(trWidth, trHeight);
Rectangle section = new Rectangle(new Point(0, b1.Height - trHeight-1), new Size(trWidth, trHeight));
Bitmap cropped = CropImage(b1, section);
cropped.Save(@"C:\111.png");
target[5].Value.Save(@"C:\000.png");
if (CompareMemCmp(cropped, target[5].Value) == true)
{
//count = target[5].Value.Width;
textBox2.AppendText(target[5].Key);
break;
}
else { textBox2.AppendText("noo"); }
//textBox1.Text = "yes!";
}
else
{
//textBox1.Text = "noo";
}
break;
}
不幸的是,即使經過裁剪的圖片在視覺上看起來是一樣的 - 它有不同的大小,以便memcmp(我比較的方法是基於這一點)返回假 ..這有
位圖被識別並且圖案圖像全部在BlackAndWhite顏色中..我想知道是否有更可靠的方式來比較另一個圖像內的圖像並通過字典(OCR)返回它的值。
請不要在「C#」等前加上標題。這就是標籤的用途。 – 2012-02-20 19:31:13
好的,我也使用C#標籤來緩和搜索..我一直認爲這裏是不同編程語言的專業人士,所以我爲了不吸引PHP,C++或Java人員而故意進入C#..但無論如何我會把它作爲警告,不會在將來重複這個錯誤 – Alex 2012-02-20 19:33:33