love008 发表于 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位,文件为了节约论坛空间就不上传了,大家百度下载和看使用方法。
发张软件截图吧

zghwelcome 发表于 2016-3-21 09:58:07

此方法相当不错

zch11230 发表于 2016-3-21 11:37:56

啊。。。。那个阿福只是为了输出好看,所以有生成文件,我们应用中只需要找到图的座标大小等信息,完全可以不用加载、生成图片这一步。如果你需要找的图也是固定的,可以预先读成字符串,用Iniread读取值就可以了。

zch11230 发表于 2016-3-21 13:43:34

看掉了,楼主已经试过不生成文件的方法了。不过我用着并没有崩溃的现象

love008 发表于 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函数尝试,目标图为大图时看是否会崩溃?

zch11230 发表于 2016-3-21 15:59:43

回复 5# love008


    如果你是直接只改了_GDIPlus_BitmapCreateFromFile这一句,肯定不行。不知道你是怎么处理的。

zch11230 发表于 2016-3-21 16:47:38

刚才把分辨率改到最大1920*1080,需要找的图295*195,取的屏幕右下角,这样需要对比的次数比较多一点,在全屏找图100次没有问题,找图过程中不生成任何文件,只是这次测试发现原来iniread有长度限制的,改用fileread无限制。先前需要找的图一般都比较小,长宽都在100以内,所以没有发现。找到一个图片块用去时间:100.782420665668毫秒,位置信息(为空未找到):1580,781,295,195

love008 发表于 2016-3-21 17:06:37

回复 6# zch11230


请教,你是如何改写的?

fybhwsx 发表于 2016-3-22 12:44:33

刚才把分辨率改到最大1920*1080,需要找的图295*195,取的屏幕右下角,这样需要对比的次数比较多一点,在全 ...
zch11230 发表于 2016-3-21 16:47 http://www.autoitx.com/images/common/back.gif

大侠是不是改的很完美了,能否分享下代码?

fybhwsx 发表于 2016-3-22 12:50:24

虚拟磁盘我一直用Primo Ramdisk Server Edition 5.6.0 注册版

justlovemm 发表于 2016-3-25 11:24:00

瞎说一下,把CreateFile 换成 CreateFileMapping 也许也是一个办法

kk_lee69 发表于 2017-3-7 17:45:37

留個腳印 MacGyver

dingcool 发表于 2017-4-3 20:47:15

it is cool~~~~~~~~

jingzhinvr 发表于 2017-4-5 20:01:33

我在也在想这个问题

zeroboss 发表于 2019-1-10 01:22:51

虚拟磁盘是个好的解决方案
页: [1]
查看完整版本: “阿福找图“取消频繁读写硬盘的方法,同时提高效率!