宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 4691|回复: 1

[原创] Delphi实现控件简单的图片识别修改版

[复制链接]
  • TA的每日心情
    奋斗
    2020-6-5 22:18
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    潇潇 发表于 2013-6-4 19:47:27 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    昨天在整理电脑桌面时发现的一个网友发来的小程序,今天重新修改了分享给大家。因此小程序利用控件来找图的,所以在线程处理方面没写完整的代码,只是利用时间控件来找图片的,给大家学习学习……

    演示代码如下:
    [Delphi] 纯文本查看 复制代码
    procedure FindImgPicxs ;stdcall ;
    var
      huaban:TCanvas;
      hhwnd:HWND;
      x,y,m,n,l:integer;
      cao,yang: TColor;
      t1,t2:Cardinal;
      label z,s;
    
    begin
    
      l:=0;
      Form1.Timer1.Enabled :=False ;
      t2:= GetTickCount;
      z:
      n:=0;
      m:=0;
    
      huaban:=TCanvas.Create;
      hhwnd:=FindWindow(nil,'星座.gif - Windows 图片和传真查看器');
      huaban.Handle :=GetDC(hhwnd);
      //找图开始
      t1:= GetTickCount;
      Form1.Image1.Canvas.Lock;
      Form1.Image1.Canvas.CopyRect(rect(0,0,105,105),huaban,Rect(100,50,205,155));
      Form1.Image1.Refresh;
      Form1.Image1.Canvas.Unlock ;
    
        for x:=0 to 105 do
        begin
          for y:=0 to 105  do
          begin
            cao:=Form1.Image1.Canvas.Pixels[x,y];
            yang:=Form1.Image2.Canvas.Pixels[x,y];
    
            if cao=yang then
            begin
              //像素相同的点个数
              n:=n+1;
              Form1.Edit1.Text := IntToStr(n);
              Form1.Edit1.Refresh;
            end else
            if cao<>yang then
            begin
              //像素不相同的点个数
              m:=m+1;
              Form1.Edit2.Text := IntToStr(m);
              Form1.Edit2.Refresh;
              //这里如果判断到一个点的像素不一样就重新找图判断
              goto z;  
            end;
            
          end ;
    
        end  ;
    
        Form1.Edit4.Text := IntToStr(m+n);
        Form1.Edit4.Refresh;
        //if (n/105*105=1) then   //11236  像素相同的百分比1,实际上百比分一直没到100%
        if m=0 then
        begin
          t1:= GetTickCount-t1;
          l:=l+1;
          form1.Edit3.Text := IntToStr(l);
          Form1.Edit3.Refresh;
          Form1.Memo2.Lines.Add(Format('Img控件找到第 %d 张图',[l]));
          Form1.Memo2.Lines.Add(Format('Img控件找单图耗时 %d 毫秒',[t1]));
          ReleaseDC(hhwnd,huaban.Handle);
    
          if l>= StrToInt(Form1.Edit5.Text) then
          begin
            t2:= GetTickCount-t2;
            Form1.Memo2.Lines.Add(Format('Img控件找图总耗时 %d 毫秒',[t2]));
            Form1.Button2.Caption :='开始找图';
            goto s;
          end
          else
          begin
            ReleaseDC(hhwnd,huaban.Handle);
            //新一轮找图开始
            goto z;
          end;
    
        end;
    
       s:
       ReleaseDC(hhwnd,huaban.Handle);
    end;


    Delphi 实现图片识别

    Delphi 实现图片识别


    源码下载:

    Delphi实现控件简单的图片识别修改版.rar (492.8 KB, 下载次数: 4)


  • TA的每日心情
    开心
    2012-7-29 00:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    花心胡萝卜 发表于 2013-6-4 20:03:32 | 显示全部楼层
    第一个赶来支持老大!
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2024-12-22 15:32 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表