找回密码
 加入
搜索
查看: 5415|回复: 14

[图形处理] “阿福找图“取消频繁读写硬盘的方法,同时提高效率!

  [复制链接]
发表于 2016-3-21 09:22:49 | 显示全部楼层 |阅读模式
因为最近要用“阿福找图“”做一个视频录制软件找图小工具,涉及实时判断视频录制窗口是否出现要找的图。1秒会可能会比对25次,用阿福找图会形成频繁读取文件,录制一小时的比对理论上就达到180000次读写,每天录制时间8小时,就是1440000次,硬盘压力太大。本想改造一下阿福找图_GDIPlus_BitmapCreateFromFile 函数为_GDIPlus_BitmapCreateFromHBITMAP函数,这样就不会频繁读写,但发现对于很小尺寸的图可以成功,对于大图会引起AU3崩溃。
  没有办法之后,想到使用内存虚拟成磁盘,把两张图在虚拟盘上进行读取(实际上也就是在内存中)这样的读写是内存级的,根本也不会读取硬盘,最终找到QSoftRAMDisk5.3.19这个软件。虚拟出一个8M硬盘进行读写,_ScreenCapture_Capture截1920*1080分辨率的BMP文件大约6M大小左右。

 QSoftRAMDisk5.3.19有64位和32位,文件为了节约论坛空间就不上传了,大家百度下载和看使用方法。
发张软件截图吧

本帖子中包含更多资源

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

×
发表于 2016-3-21 09:58:07 | 显示全部楼层
此方法相当不错
发表于 2016-3-21 11:37:56 | 显示全部楼层
啊。。。。那个阿福只是为了输出好看,所以有生成文件,我们应用中只需要找到图的座标大小等信息,完全可以不用加载、生成图片这一步。如果你需要找的图也是固定的,可以预先读成字符串,用Iniread读取值就可以了。
发表于 2016-3-21 13:43:34 | 显示全部楼层
看掉了,楼主已经试过不生成文件的方法了。不过我用着并没有崩溃的现象
 楼主| 发表于 2016-3-21 15:12:41 | 显示全部楼层
回复 4# zch11230
同时回复你的3#和4#贴

我写过此贴:http://www.autoitx.com/thread-51580-1-1.html
大漠最后免费版/阿福找图/MyImageSearchwithoutDLL竟然相差17.9倍(2016-3-2日晚更新)


1、原来阿福的算法是读取两个文件比较,我在http://www.autoitx.com/thread-51580-1-1.html
贴里小改了一下,变成当前屏幕找图。
由于是视频画面找图,肯定要用_GDIPlus_BitmapCreateFromFile 读取和_ScreenCapture_Capture截图,肯定会读写。

2、你是否把_GDIPlus_BitmapCreateFromFile 函数改为_GDIPlus_BitmapCreateFromHBITMAP函数尝试,目标图为大图时看是否会崩溃?
发表于 2016-3-21 15:59:43 | 显示全部楼层
回复 5# love008


    如果你是直接只改了_GDIPlus_BitmapCreateFromFile这一句,肯定不行。不知道你是怎么处理的。
发表于 2016-3-21 16:47:38 | 显示全部楼层
刚才把分辨率改到最大1920*1080,需要找的图295*195,取的屏幕右下角,这样需要对比的次数比较多一点,在全屏找图100次没有问题,找图过程中不生成任何文件,只是这次测试发现原来iniread有长度限制的,改用fileread无限制。先前需要找的图一般都比较小,长宽都在100以内,所以没有发现。
找到一个图片块用去时间:100.782420665668毫秒,位置信息(为空未找到):1580,781,295,195
 楼主| 发表于 2016-3-21 17:06:37 | 显示全部楼层
回复 6# zch11230


请教,你是如何改写的?
发表于 2016-3-22 12:44:33 | 显示全部楼层
刚才把分辨率改到最大1920*1080,需要找的图295*195,取的屏幕右下角,这样需要对比的次数比较多一点,在全 ...
zch11230 发表于 2016-3-21 16:47


大侠是不是改的很完美了,能否分享下代码?
发表于 2016-3-22 12:50:24 | 显示全部楼层
虚拟磁盘我一直用Primo Ramdisk Server Edition 5.6.0 注册版

本帖子中包含更多资源

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

×
发表于 2016-3-25 11:24:00 | 显示全部楼层
瞎说一下,把CreateFile 换成 CreateFileMapping 也许也是一个办法
发表于 2017-3-7 17:45:37 | 显示全部楼层
留個腳印 MacGyver
发表于 2017-4-3 20:47:15 | 显示全部楼层
it is cool~~~~~~~~
发表于 2017-4-5 20:01:33 | 显示全部楼层
我在也在想这个问题
发表于 2019-1-10 01:22:51 | 显示全部楼层
虚拟磁盘是个好的解决方案
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 21:37 , Processed in 0.092928 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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