开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 6505|回复: 556
收起左侧

[易语言纯源码] 算法找图的极致优化 | 自研动态算法位图区域模糊找图_多返

    [复制链接]
回帖奖励 74 枚 精币 回复本帖可获得 1 枚 精币奖励! 每人限 1 次(中奖概率 50 %)
结帖率:100% (3/3)
发表于 2025-12-12 13:53:44 | 显示全部楼层 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 z573277679 于 2025-12-13 12:47 编辑

找图速度几乎做到了极致,堪称天花板的存在(至少我没有见到比这更快的速度)。本源码完全开源,仅供学习交流使用,严禁用于任何商业目的!我非常讨厌有人拿我的代码去集成到付费脚本或工具里卖钱,所以请尊重作者劳动成果,谢谢配合!


分享一个我自己突发奇想搞出来的找图算法:位图区域模糊找图_多返(极速优化版)核心思路是用“动态基点过滤(在极端情况下快速排除无效区域)、抽样比对(大幅降低复杂度)、提前剪枝、区域跳过(避免重复扫描)”的方式,大幅减少无用像素的遍历和颜色比对次数。看过源码的应该能很清楚地看出这个思路的精妙之处。


主要特点:支持多返(可一次返回所有匹配位置)支持模糊匹配(可设置相似度、吻合度)找图速度极快即使在纯色背景下找带大片纯色的模板,也不会出现性能暴跌用易语言+核心汇编实现,无需第三方DLL实测数据:1080×1920 像素大图,找一个“-”符号小图(故意保留大片白色区域),最快仅需 16ms
16ms.png
2560×1440 像素大图,同样找这个“-”符号小图,最快仅需 46ms(实际很多时候更快)
46ms.png 31ms.png
特别说明:我故意保留了大量纯色区域来测试,就是为了攻克“纯色背景下找图会严重拖慢速度”的老问题。结果证明这个算法在这种极端情况下依然非常高效,基本杜绝了不必要的计算浪费。
2025年12月12日 15:40进行了一次更新替换,修复了一个小图过大导致找图时间过长的问题。
游客,如果您要查看本帖隐藏内容请回复


源码已完整贴出(包括主程序和所有子程序),里面有详细注释,大家可以直接复制使用或学习。如果有任何问题,欢迎在楼下留言讨论,但请不要用于商业用途!觉得有帮助的麻烦帮忙好评一下,谢谢。

开源作者:精易论坛 z573277679(VX同号)




点评

吹牛逼二值化?你倒是发出来啊?   广东省湛江市  发表于 6 天前
现在有更优化的方式, 直接将图片二值化,那你也出个源代码啊.   山东省淄博市  发表于 2025-12-14 21:39
论坛里面某些点评大师甚至源码都不看就开始打嘴炮,而且嘴里说用烂了也没看见发源码出来。反正这东西公开后你说是你自己写的都没事。   重庆市重庆市  发表于 2025-12-13 13:28
动态基点+预计算偏移+跳过已匹配区域 这种方式很多年前都用烂了....而且有痛点,小图越大,速度越慢 现在有更优化的方式, 直接将图片二值化,大图分...   河南省焦作市  发表于 2025-12-13 12:50

评分

参与人数 24好评 +14 精币 +41 收起 理由
那小子很坏 + 1 + 5 此处应该有鼓励~
哆啦恶梦 + 1 + 2 这个可以用在工业领域做缺陷识别吗?
h2995527 + 1 + 1 支持开源~!感谢分享
wenxiao1998 + 1 新技能已get√
webyezi + 1 + 2 现在有更优化的方式, 直接将图片二值化,那你也出个源代码啊.
chuanqibuding + 1 感谢分享!
学而容易 + 1 + 1 要是真的,那就牛逼了。等我回去试试
﹎z° + 1 + 2 支持开源~!感谢分享
cow + 1 加油!
airaz + 1 + 3 支持开源~!感谢分享
inat + 1 + 2 感谢分享,很给力!~
cbl521ysys + 1 感谢分享,很给力!~
kyo9766 + 1 感谢分享,很给力!~
恒大大 + 1 感谢分享,很给力!~
文西哥 + 1 感谢分享,很给力!~
xhping + 1 感谢分享,很给力!~
cxl + 1 + 2 支持开源~!感谢分享
风雨3137 + 1 感谢分享,很给力!~
cui870222829 + 1 感谢分享,很给力!~
明天自然醒 + 1 + 3 支持开源~!感谢分享
zjbin1989 + 1 感谢分享,很给力!~
cqcc + 1 + 3 希望贴出“画矩形边框”子程序!
baitso + 1 + 3 感谢分享,很给力!~
szxiao + 1 + 2 感谢分享,很给力!~

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (3/3)

签到天数: 16 天

 楼主| 发表于 2025-12-12 16:21:01 | 显示全部楼层   重庆市重庆市
可以看到,165个目标最快32ms就能搞定。我真c了。 13410001078929732.jpg

回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 16 天

 楼主| 发表于 2025-12-12 21:59:23 | 显示全部楼层   重庆市重庆市
本帖最后由 z573277679 于 2025-12-12 22:04 编辑

看到有人要画框的源码,现写了一个api的,自己粘贴进去就能用了

  
数据类型名公开备 注
RECT 矩形结构
成员名类 型传址数组备 注
left整数型  
top整数型  
right整数型  
bottom整数型  

DLL命令名返回值类型公开备 注
GetDC整数型 获取设备场景
DLL库文件名:
user32
在DLL库中对应命令名:
GetDC
参数名类 型传址数组备 注
hwnd整数型
DLL命令名返回值类型公开备 注
ReleaseDC整数型 释放设备场景
DLL库文件名:
user32
在DLL库中对应命令名:
ReleaseDC
参数名类 型传址数组备 注
hwnd整数型
hdc整数型
DLL命令名返回值类型公开备 注
CreateSolidBrush整数型 创建实色画刷
DLL库文件名:
gdi32
在DLL库中对应命令名:
CreateSolidBrush
参数名类 型传址数组备 注
color整数型
DLL命令名返回值类型公开备 注
FrameRect整数型 用指定的画刷绘制矩形边框
DLL库文件名:
user32
在DLL库中对应命令名:
FrameRect
参数名类 型传址数组备 注
hdc整数型
lpRectRECT必须传址
hBrush整数型
DLL命令名返回值类型公开备 注
DeleteObject整数型 删除GDI对象
DLL库文件名:
gdi32
在DLL库中对应命令名:
DeleteObject
参数名类 型传址数组备 注
hObject整数型

子程序名返回值类型公开备 注
画矩形边框 纯API实现
参数名类 型参考可空数组备 注
窗口句柄整数型
左边整数型
顶边整数型
右边整数型
底边整数型
颜色整数型
变量名类 型静态数组备 注
hdc整数型 
rectRECT 
画刷句柄整数型 
' 1. 处理默认参数
如果真 (是否为空 (窗口句柄))
窗口句柄 = 0

' 2. 获取 DC
hdc = GetDC (窗口句柄)
' 3. 设置矩形结构
rect.left = 左边
rect.top = 顶边
rect.right = 右边
rect.bottom = 底边
' 4. 处理颜色
如果真 (是否为空 (颜色))
置随机数种子 ()
颜色 = 取颜色值 (取随机数 (0, 255), 取随机数 (0, 255), 取随机数 (0, 255))

' 5. 创建画刷
画刷句柄 = CreateSolidBrush (颜色)
' 6. 绘制矩形
FrameRect (hdc, rect, 画刷句柄)
' 7. 清理资源 (删除画刷)
DeleteObject (画刷句柄)
' 8. 释放 DC
ReleaseDC (窗口句柄, hdc)


回复 支持 反对

使用道具 举报

签到天数: 23 天

发表于 2 小时前 | 显示全部楼层   广东省东莞市
感谢分享!
回复 支持 反对

使用道具 举报

结帖率:91% (42/46)

签到天数: 3 天

发表于 昨天 23:10 | 显示全部楼层   河南省信阳市

回帖奖励 +1 枚 精币

千万的千万的五千多
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 昨天 16:53 | 显示全部楼层   河南省信阳市
        此处应该有鼓励~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 8 天

发表于 昨天 16:46 | 显示全部楼层   新疆维吾尔自治区昌吉回族自治州
就是为了攻克“纯色背景下找图会严重拖慢速度”的老问题。结果证明这个算法在这种极端情况下依然非常高效,基本杜绝了不必要的计算浪费。
回复 支持 反对

使用道具 举报

结帖率:69% (9/13)

签到天数: 4 天

发表于 昨天 16:46 | 显示全部楼层   美国
感谢楼主!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 昨天 14:17 | 显示全部楼层   四川省乐山市

回帖奖励 +1 枚 精币

谢谢偻主分享。
回复 支持 反对

使用道具 举报

结帖率:98% (148/151)

签到天数: 16 天

发表于 昨天 04:42 | 显示全部楼层   河南省濮阳市
还有个bug  找图 找到位置了 你没完全跳过已找到的坐标  只跳过了小图一半的面积  还有时候跳过小图的3/2 的面积
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 14 天

发表于 昨天 00:26 | 显示全部楼层   山东省枣庄市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:33% (4/12)

签到天数: 15 天

发表于 前天 22:49 | 显示全部楼层   四川省成都市
看看,下载 了
回复 支持 反对

使用道具 举报

结帖率:54% (14/26)

签到天数: 10 天

发表于 前天 17:15 | 显示全部楼层   江西省景德镇市

回帖奖励 +1 枚 精币

谢谢大神分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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