delphi接口文件,有老外做了工作共享出来了https://github.com/Laex/Delphi-OpenCV
解决方案 »
- 关于字符串内存分配的问题,求教
- 问一个接口继承的问题
- 我想实现netsuper的发送信息的功能,谁能帮我一下啊?(在线等待)
- 这个版本的advStringGrid有什么限制吗?
- 请问TDBCtrlGrid怎么用
- 为什么改变窗口大小会使paintbox组件重新显示
- MTS的分发问题
- 我学DELPHI也有半年了吧。书也看了三。四本。感觉没有什么提高。我以后应该怎么办。我的工作并不是编程。可是我挺喜欢DELPHI的。希望大家指点一二。有好经验。分可在加!真心希望大侠不借赐教!
- 连接数据库 ADO和BDE那种比较好,那种用的比较多!!!!!!!!!
- delphi如何实现设备坐标和逻辑坐标的转换
- 程序运行好慢用什么办法
- 求一个定数读取的代码
http://www.cnblogs.com/CoreCaiNiao/archive/2011/12/26/2302141.html
你网上搜索下验证码的识别,了解下方法,我简要说下思路:
1.图像二值化;//可百度搜索delphi图像二值化,下同
2.图像分割;
3.找数字规律特征,也是最麻烦的一步!
4.识别;
识别的原理:
采用画线分割法,看画线经过点的个数,比如在图像分割后,在1/3处画一条横线,则经过一个点的数字有:
123567,经过两个点的有:0489;同理可以在2/3再画线经过一个点的有123579
//二值化代码
function TForm1.Binaryzation(img:TBitmap): TBitmap;
var
m255 : Integer;
i,j,c,t : Integer;
r,g,b : Extended;
n,k : Integer;
begin
m255 := 255;
for i := 0 to img.Width-1 do
begin
for j := 0 to img.Height-1 do
begin
if (i=0) or (i=img.Width-1) then
begin
img.Canvas.Pixels[i,j] := clBlack;
Continue;
end;
if (j=0) or (j=img.Height-1) then
begin
img.Canvas.Pixels[i,j] := clBlack;
Continue;
end;
c := img.Canvas.Pixels[i,j];
r := GetRValue(c) * 0.333;
g := GetGValue(c) * 0.333;
b := GetBValue(c) * 0.333;
t := Round((r+g+b)/m255); //0.5 U:white ,0.5 O:black
if t=0 then
img.Canvas.Pixels[i,j] := clWhite
else
img.Canvas.Pixels[i,j] := clBlack;
end;
end;
Result := img;
end;//识别关键代码 计算画线交点个数
for i:=0 to img.Width-1 do
begin
for j:=0 to img.height-1 do
begin
if imgAfterCut.Canvas.Pixels[i,j]=clwhite then //画线与数字的交点
begin
if (i=Round(1*(img.height-1)/3)) then // 1/3处点的个数
begin
a_31 := a_31+1; //a_31定义为integer;
end;
if (i=Round(2*(img.height-1)/3)) then // 2/3处点的个数
begin
a_32 := a_32+1;
end;
//.........统计1/2 竖向1/3 2/3 1/2等............. end;
end;
end; if a_31= 1 then
showmessage('123..')
else
if a_31= 2 then
begin
showmessage('0489');
// 其他逻辑判断
end;