(*//
标题:简单的图象识别
声明:本贴只作为技术交流
设计:Zswang
日期:2003-09-09http://verify.tencent.com/getimage?0.13927358567975412
这是一个附加码~~先分析下
难点:
1.四个数字加上了一些随机的布点~~
2.背景和字体颜色也随机~~弱点:
1.数字大小一致,字体不会发生改变~~
2.只有两种颜色~~思路:
取得背景色和字体色比较容易,谁的点多就是背景~~
这里是用TBitmap::PixelFormat来处理成单色~~将标准的数字字体保存下来(就10个),作为比较的元素~~
把两个图象重叠~~
比较重叠前和重叠后是否发生变化~~
这样就可以避免随机布点的干扰~~话不多说,代码为例~~
//*)//RecogniseUnit.pas
unit RecogniseUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ImgList, StdCtrls, OleCtrls, SHDocVw;type
TFormRecognise = class(TForm)
ImageList1: TImageList;
ButtonRefresh: TButton;
WebBrowser1: TWebBrowser;
EditNumber: TEdit;
procedure ButtonRefreshClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure WebBrowser1DownloadComplete(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FormRecognise: TFormRecognise;implementation{$R *.dfm}uses Math; //use Math.Min()function SameCanvas(mCanvasA, mCanvasB: TCanvas): Boolean; { 比较两个画布是否相同 }
var
I, J: Integer;
begin
Result := False;
if not Assigned(mCanvasA) then Exit;
if not Assigned(mCanvasB) then Exit;
for I := Min(mCanvasA.ClipRect.Left, mCanvasB.ClipRect.Left) to
Min(mCanvasA.ClipRect.Right, mCanvasB.ClipRect.Right) do
for J := Min(mCanvasA.ClipRect.Top, mCanvasB.ClipRect.Top) to
Min(mCanvasA.ClipRect.Bottom, mCanvasB.ClipRect.Bottom) do
if mCanvasA.Pixels[I, J] <> mCanvasB.Pixels[I, J] then Exit;
Result := True;
end; { SameCanvas }procedure TFormRecognise.ButtonRefreshClick(Sender: TObject);
begin
TButton(Sender).Enabled := False;
WebBrowser1.Refresh;
end;procedure TFormRecognise.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://verify.tencent.com/getimage?0.8539209923422657');
end;procedure TFormRecognise.WebBrowser1DownloadComplete(Sender: TObject);
procedure fNumBitmap(mHandle: THandle; mIndex: Integer; mBitmap: TBitmap);
var
vDC: HDC;
begin
vDC := GetDC(mHandle);
try
mBitmap.Assign(nil);
mBitmap.Width := 5;
mBitmap.Height := 8;
BitBlt(mBitmap.Canvas.Handle, 0, 0, mBitmap.Width, mBitmap.Height, vDC,
17 + 6 * mIndex, 18, SRCCOPY);
mBitmap.PixelFormat := pf8bit;
mBitmap.PixelFormat := pf1bit;
finally
DeleteDC(vDC);
end;
end; function fGetNum(mHandle: THandle; mIndex: Integer): Integer;
var
I: Integer;
vBitmapA: TBitmap;
vBitmapB: TBitmap;
begin
Result := -1;
vBitmapA := TBitmap.Create;
vBitmapB := TBitmap.Create;
fNumBitmap(mHandle, mIndex, vBitmapA);
vBitmapB.Width := vBitmapA.Width;
vBitmapB.Height := vBitmapA.Height;
for I := 9 downto 0 do begin //8会覆盖3的基础码,所以反循环
vBitmapB.Canvas.Draw(0, 0, vBitmapA);
ImageList1.Draw(vBitmapB.Canvas, 0, 0, I);
vBitmapB.PixelFormat := pf8bit;
vBitmapB.PixelFormat := pf1bit;
if SameCanvas(vBitmapA.Canvas, vBitmapB.Canvas) then begin
Result := I;
Exit;
end;
end;
vBitmapA.Free;
vBitmapB.Free;
end;
var
S: string;
I: Integer;
begin
Application.ProcessMessages;
S := '';
for I := 0 to 3 do S := S + IntToStr(fGetNum(WebBrowser1.Handle, I));
EditNumber.Text := S;
ButtonRefresh.Enabled := True;
end;end.
标题:简单的图象识别
声明:本贴只作为技术交流
设计:Zswang
日期:2003-09-09http://verify.tencent.com/getimage?0.13927358567975412
这是一个附加码~~先分析下
难点:
1.四个数字加上了一些随机的布点~~
2.背景和字体颜色也随机~~弱点:
1.数字大小一致,字体不会发生改变~~
2.只有两种颜色~~思路:
取得背景色和字体色比较容易,谁的点多就是背景~~
这里是用TBitmap::PixelFormat来处理成单色~~将标准的数字字体保存下来(就10个),作为比较的元素~~
把两个图象重叠~~
比较重叠前和重叠后是否发生变化~~
这样就可以避免随机布点的干扰~~话不多说,代码为例~~
//*)//RecogniseUnit.pas
unit RecogniseUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ImgList, StdCtrls, OleCtrls, SHDocVw;type
TFormRecognise = class(TForm)
ImageList1: TImageList;
ButtonRefresh: TButton;
WebBrowser1: TWebBrowser;
EditNumber: TEdit;
procedure ButtonRefreshClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure WebBrowser1DownloadComplete(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FormRecognise: TFormRecognise;implementation{$R *.dfm}uses Math; //use Math.Min()function SameCanvas(mCanvasA, mCanvasB: TCanvas): Boolean; { 比较两个画布是否相同 }
var
I, J: Integer;
begin
Result := False;
if not Assigned(mCanvasA) then Exit;
if not Assigned(mCanvasB) then Exit;
for I := Min(mCanvasA.ClipRect.Left, mCanvasB.ClipRect.Left) to
Min(mCanvasA.ClipRect.Right, mCanvasB.ClipRect.Right) do
for J := Min(mCanvasA.ClipRect.Top, mCanvasB.ClipRect.Top) to
Min(mCanvasA.ClipRect.Bottom, mCanvasB.ClipRect.Bottom) do
if mCanvasA.Pixels[I, J] <> mCanvasB.Pixels[I, J] then Exit;
Result := True;
end; { SameCanvas }procedure TFormRecognise.ButtonRefreshClick(Sender: TObject);
begin
TButton(Sender).Enabled := False;
WebBrowser1.Refresh;
end;procedure TFormRecognise.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://verify.tencent.com/getimage?0.8539209923422657');
end;procedure TFormRecognise.WebBrowser1DownloadComplete(Sender: TObject);
procedure fNumBitmap(mHandle: THandle; mIndex: Integer; mBitmap: TBitmap);
var
vDC: HDC;
begin
vDC := GetDC(mHandle);
try
mBitmap.Assign(nil);
mBitmap.Width := 5;
mBitmap.Height := 8;
BitBlt(mBitmap.Canvas.Handle, 0, 0, mBitmap.Width, mBitmap.Height, vDC,
17 + 6 * mIndex, 18, SRCCOPY);
mBitmap.PixelFormat := pf8bit;
mBitmap.PixelFormat := pf1bit;
finally
DeleteDC(vDC);
end;
end; function fGetNum(mHandle: THandle; mIndex: Integer): Integer;
var
I: Integer;
vBitmapA: TBitmap;
vBitmapB: TBitmap;
begin
Result := -1;
vBitmapA := TBitmap.Create;
vBitmapB := TBitmap.Create;
fNumBitmap(mHandle, mIndex, vBitmapA);
vBitmapB.Width := vBitmapA.Width;
vBitmapB.Height := vBitmapA.Height;
for I := 9 downto 0 do begin //8会覆盖3的基础码,所以反循环
vBitmapB.Canvas.Draw(0, 0, vBitmapA);
ImageList1.Draw(vBitmapB.Canvas, 0, 0, I);
vBitmapB.PixelFormat := pf8bit;
vBitmapB.PixelFormat := pf1bit;
if SameCanvas(vBitmapA.Canvas, vBitmapB.Canvas) then begin
Result := I;
Exit;
end;
end;
vBitmapA.Free;
vBitmapB.Free;
end;
var
S: string;
I: Integer;
begin
Application.ProcessMessages;
S := '';
for I := 0 to 3 do S := S + IntToStr(fGetNum(WebBrowser1.Handle, I));
EditNumber.Text := S;
ButtonRefresh.Enabled := True;
end;end.
object FormRecognise: TFormRecognise
Left = 369
Top = 273
Width = 174
Height = 88
Caption = 'FormRecognise'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object ButtonRefresh: TButton
Left = 89
Top = 35
Width = 75
Height = 25
Caption = 'Refresh'
TabOrder = 0
OnClick = ButtonRefreshClick
end
object WebBrowser1: TWebBrowser
Left = 0
Top = 0
Width = 165
Height = 34
TabOrder = 1
OnDownloadComplete = WebBrowser1DownloadComplete
ControlData = {
4C0000000E110000840300000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
object EditNumber: TEdit
Left = 3
Top = 37
Width = 86
Height = 21
Color = clSilver
TabOrder = 2
end
object ImageList1: TImageList
Height = 8
Width = 5
Left = 127
Bitmap = {
494C01010A000E00040005000800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000140000002000000001001000000000000005
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000014000000200000000100010000000000800000000000000000000000
000000000000000000000000FFFFFF0000000000000000000000000000000000
0000000000000000000000000000000088C00000774000007780000074000000
8B80000073800000738000008C400000EC637000EB9D7000079DB0006F9DB000
6B83D000A85FD000CBEFE000E8300000D8011000AEDEE00076EFE00076F7E000
76FB900072FDE000ACDCE000DEE3100000000000000000000000000000000000
000000000000}
end
end
看了伴水的这个贴子,我想到了.....汉字的识别 哈哈哈 同理呀 我先做个例子....同志们等会呀
革命就需要你这样的人,能够把面扩展开,星星之火可以燎原~~
定位就是用附件里的画笔,放大、移动、定位就ok了~~
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg, ImgList;type
TCrackPanel = class(TPanel); TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Panel1: TPanel;
Panel2: TPanel;
Button2: TButton;
Edit2: TEdit;
ImageList1: TImageList;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses Math; //use Math.Min()procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
i: Integer;
begin
Bmp := TBitmap.Create;
Bmp.Width := Width;
Bmp.Height := Form1.Height;
Bmp.Canvas.Brush.Color := clBtnFace;
SetBKMode(Bmp.Canvas.Handle, TRANSPARENT);
Bmp.Canvas.TextOut(0, 0, Edit1.Text);
for i := 0 to Bmp.Width - 1 do
TCrackPanel(Panel1).Canvas.CopyRect(Rect(0,0,i,Bmp.Height),Bmp.Canvas,Rect(0,0,i,Bmp.Height));
Bmp.Free;
end;function SameCanvas(mCanvasA, mCanvasB: TCanvas): Boolean; { 比较两个画布是否相同 }
var
I, J: Integer;
begin
Result := False;
if not Assigned(mCanvasA) then Exit;
if not Assigned(mCanvasB) then Exit;
for I := Min(mCanvasA.ClipRect.Left, mCanvasB.ClipRect.Left) to
Min(mCanvasA.ClipRect.Right, mCanvasB.ClipRect.Right) do
for J := Min(mCanvasA.ClipRect.Top, mCanvasB.ClipRect.Top) to
Min(mCanvasA.ClipRect.Bottom, mCanvasB.ClipRect.Bottom) do
if mCanvasA.Pixels[I, J] <> mCanvasB.Pixels[I, J] then Exit;
Result := True;
end; { SameCanvas }procedure TForm1.Button2Click(Sender: TObject);
var
vBitmapA: TBitmap;
begin
vBitmapA := TBitmap.Create;
vBitmapA.Width := 16;
vBitmapA.Height := 16;
ImageList1.GetBitmap(0, vBitmapA);
vBitmapA.PixelFormat := pf8bit;
vBitmapA.PixelFormat := pf1bit;
if SameCanvas(vBitmapA.Canvas, TCrackPanel(Panel1).Canvas) then
Edit2.Text := '你输入的是个"王"字我没有错吧 哇哈哈哈哈'
else
Edit2.Text := '你输入的这是个什么呀 ^^!';
vBitmapA.Free;
end;end.
object Form1: TForm1
Left = 192
Top = 107
Width = 419
Height = 161
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 40
Top = 92
Width = 75
Height = 25
Caption = '生成图像'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 16
Top = 56
Width = 121
Height = 21
TabOrder = 1
end
object Panel1: TPanel
Left = 60
Top = 24
Width = 16
Height = 16
TabOrder = 2
end
object Panel2: TPanel
Left = 288
Top = 20
Width = 16
Height = 16
TabOrder = 3
end
object Button2: TButton
Left = 268
Top = 92
Width = 75
Height = 25
Caption = '识别'
TabOrder = 4
OnClick = Button2Click
end
object Edit2: TEdit
Left = 204
Top = 56
Width = 189
Height = 21
TabOrder = 5
end
object ImageList1: TImageList
Left = 364
Top = 16
Bitmap = {
494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001001000000000000008
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000100000000100010000000000800000000000000000000000
000000000000000000000000FFFFFF00FFFF000000000000FFFF000000000000
FFFF000000000000800F000000000000FDFF000000000000FDFF000000000000
FDFF000000000000FDFF000000000000C01F000000000000FDFF000000000000
FDFF000000000000FDFF000000000000C01F000000000000FFBF000000000000
FFFF000000000000FFFF00000000000000000000000000000000000000000000
000000000000}
end
end
// vBitmapA.PixelFormat := pf8bit;
// vBitmapA.PixelFormat := pf1bit; //这两条没用了object ImageList1: TImageList
Left = 364
Top = 16
Bitmap = {
494C010101000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001001000000000000008
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000100000000100010000000000800000000000000000000000
000000000000000000000000FFFFFF00FFFF000000000000FFFF000000000000
FFFF000000000000FFFF000000000000001F000000000000FBFF000000000000
FBFF000000000000FBFF000000000000FBFF000000000000803F000000000000
FBFF000000000000FBFF000000000000FBFF000000000000803F000000000000
FF7F000000000000FFFF000000000000}
end
// vBitmapA.PixelFormat := pf1bit; //这两条没用了2.
//Bmp.Canvas.TextOut(0, 0, Edit1.Text); // 以前的
Bmp.Canvas.TextOut(1, 1, Edit1.Text); //改成这样就可以了 ^^!就差这么两点程序就过去了
老大很久没有出手了,
hehe
Step.1 图像预处理
对动态采集到的图像进行滤波、边界增强等处理,以克服图像干扰,改善识别效果。
Step.2 车牌的定位
在动态采集到的图像中,自动找到车牌的位置。
Step.3 字符分割
在车牌图像上,自动提取单个字符的图像。
Step.4 字符识别
在每个字符图像中识别出字符文字。 这是汉王眼的介绍~~
http://www.hw99.com/product/prodview.asp?proid=090102to CDSoftwareWj:
车牌识别你是做过D~~
我是没有做过D~~
拿我开涮呀?~~