找回密码
 加入
搜索
查看: 18548|回复: 26

[图形处理] 人脸识别功能,从易转AU3

 火.. [复制链接]
发表于 2013-8-3 13:35:50 | 显示全部楼层 |阅读模式
本帖最后由 chenronting 于 2013-8-3 19:43 编辑

首先,感谢“dzq1980”朋友的辛勤工作,并分享如此美妙的作品。
原地址:http://bbs.eyuyan.com/read.php?tid=331422

言归正传,我想把此功能转化到AU3里来,也就是dzq1980 提供的DLL文件里的功能
有会易语言的朋友能帮忙从这个文件里提取出来吗?

下面图片是易语言使用的DLLCALL的格式


这里我再附上我自己研究的结果,不对之处,请多指教!
Global $file  = "C:\Documents and Settings\Administrator\My Documents\下载\r\测试图片2.jpg"
Global $file1 = "C:\Documents and Settings\Administrator\My Documents\下载\r\haarcascade_frontalface_alt.xml"  

Local $str = "wchar[300];wchar[300];double;int;int;int;wchar[300]"
Local $b = DllStructCreate($str)
DllStructSetData($b ,1,$file);照片地址
DllStructSetData($b ,2,$file1);XML文件地址,必要
DllStructSetData($b ,3,"1.3");缩放比例
DllStructSetData($b ,4,"10");像素大小
DllStructSetData($b ,5,2);检测次数
DllStructSetData($b ,6,1);模式,1为路径,2为BMP数据集
MsgBox(0,0,DllStructGetData($b ,1))
$a=DllCall("OpenCV.dll", _
        "int","Distinguish", _
        "char",DllStructGetData($b ,1), _
        "char",DllStructGetData($b ,2), _
        "double",DllStructGetData($b ,3), _
        "double",DllStructGetData($b ,3), _
        "int",DllStructGetData($b ,4), _
        "int",DllStructGetData($b ,4), _
        "int",DllStructGetData($b ,5), _
        "int",DllStructGetData($b ,6), _
        "char",DllStructGetData($b ,7))  
MsgBox(0,$a,DllStructGetData($b ,7))


原来是没有使用 DllStructCreate 的,但这个 DLL 文件应该是C/C++建立的,就使用了。
不知我这样使用是否正确,也请一并指教之,谢谢。

测试结果都是没有得到数据

看来是没有人呢,都一天了。来一张美女图,勾引一下!!!



感谢之至!

本帖子中包含更多资源

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

×
发表于 2013-8-3 21:48:36 | 显示全部楼层
三个是你图片修改工具画的? 看起来挺炫的。。路过,不懂,等高手来
 楼主| 发表于 2013-8-3 22:28:16 | 显示全部楼层
回复 2# auto


    当然不是画的,这是软件自己判断出来的,就是我上传的那个附件。你可以下载看一下, 但需要安装易语言。
发表于 2013-8-3 23:34:20 | 显示全部楼层
本帖最后由 rchockxm 于 2013-8-3 23:40 编辑

回复 3# chenronting

Autoit 3.3.9.14 Beta
Global $File1 = "D:\3.JPG"
Global $File2 = "C:\haarcascade_frontalface_alt.xml"  

Global $DllStruct = DllStructCreate("wchar[300];wchar[300];double;int;int;int;wchar[300]") 
DllStructSetData($DllStruct, 1, $File1)
DllStructSetData($DllStruct, 2, $File2)
DllStructSetData($DllStruct, 3, "1.3")
DllStructSetData($DllStruct, 4, "10")
DllStructSetData($DllStruct, 5, 2)
DllStructSetData($DllStruct, 6, 1)
DllStructSetData($DllStruct, 7, "")

Global $Dll =  DllCall("OpenCV.dll", _
    "int", "Distinguish", _
    "str", DllStructGetData($DllStruct, 1), _
    "str", DllStructGetData($DllStruct, 2), _
    "double", DllStructGetData($DllStruct, 3), _
    "double", DllStructGetData($DllStruct, 3), _
    "int", DllStructGetData($DllStruct, 4), _
    "int", DllStructGetData($DllStruct, 4), _
    "int", DllStructGetData($DllStruct, 5), _
    "int", DllStructGetData($DllStruct, 6), _
    "str", DllStructGetData($DllStruct, 7))

MsgBox(0, "Test", $Dll[9]) 
返回
277,103,365,191
我這樣是有東西的
能自動畫圖嗎?
发表于 2013-8-4 00:39:44 | 显示全部楼层
这个厉害啊。不是很懂。
发表于 2013-8-4 01:36:42 | 显示全部楼层
楼主,OpenCV是开源的,下载地址:http://www.opencv.org.cn/index.php/Download
然后解压到任意目录,samples目录下就有大量的例子。

本帖子中包含更多资源

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

×
发表于 2013-8-4 01:58:18 | 显示全部楼层
Main()
Func Main()
        Local $hDll = DllOpen('OpenCV.dll')
        Local $sImage = @ScriptDir & '\测试图片1.jpg'
        Local $sCascadeFile = @ScriptDir & '\haarcascade_frontalface_alt.xml'
        Local $tBuffer = DllStructCreate('char[260]')
        Local $Ret = DllCall($hDll, 'int', 'Distinguish', 'str', $sImage, 'str', $sCascadeFile, 'double', 1.3, 'double', 1.3, 'int', 3, 'int', 3, 'int', 2, 'int', 1, 'ptr', DllStructGetPtr($tBuffer))
        If @error = 0 Then MsgBox(0, '', DllStructGetData($tBuffer, 1))
        DllClose($hDll)
EndFunc
上面这个是楼主所以提供的DLL的调用代码,但经测不能运行于NT6
同时只能用模式1
从链接提供的工程代码来看,DLL还有很多问题
发表于 2013-8-4 02:00:53 | 显示全部楼层
回复 7# ceoguang

超版辛苦了。
问个与本主题无关的问题,有无关于二维码QR CODE的解码插件?一直在寻找这方面的。
发表于 2013-8-4 02:07:32 | 显示全部楼层
回楼上,见http://trac.koka-in.org/libdecodeqr
libdecodeqr同样是开源的,同样使用了OpenCV,多多少少与这个贴扯上了点关系
发表于 2013-8-4 02:34:49 | 显示全部楼层
回复 9# ceoguang

谢过超版,直奔链接。
注意休息,身体是革命的本钱。
发表于 2013-8-4 08:24:54 | 显示全部楼层
图片很撩人 很强大啊
发表于 2013-8-4 10:51:15 | 显示全部楼层
不知道LZ的头像能识别不…
 楼主| 发表于 2013-8-4 11:02:10 | 显示全部楼层
回复 4# rchockxm


    怪了,为什么我这里提示数组错误呢?你那里是什么环境?
 楼主| 发表于 2013-8-4 11:04:11 | 显示全部楼层
回复 7# ceoguang


    是吗,我这里是WIN7 X64的, 看来得换个环境试试。谢谢提醒 。@.@
 楼主| 发表于 2013-8-4 11:15:20 | 显示全部楼层
回复 7# ceoguang


    经测试,WIN7X64,无法得到结果,而XP可以。请问超版有什么好的解决方案吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 23:16 , Processed in 0.086075 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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