chenronting 发表于 2013-8-3 13:35:50

人脸识别功能,从易转AU3

本帖最后由 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;wchar;double;int;int;int;wchar"
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++建立的,就使用了。
不知我这样使用是否正确,也请一并指教之,谢谢。

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

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



感谢之至!

auto 发表于 2013-8-3 21:48:36

三个是你图片修改工具画的? 看起来挺炫的。。路过,不懂,等高手来

chenronting 发表于 2013-8-3 22:28:16

回复 2# auto


    当然不是画的,这是软件自己判断出来的,就是我上传的那个附件。你可以下载看一下, 但需要安装易语言。

rchockxm 发表于 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;wchar;double;int;int;int;wchar")
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)
返回277,103,365,191我這樣是有東西的
能自動畫圖嗎?

pk196371 发表于 2013-8-4 00:39:44

这个厉害啊。不是很懂。

ceoguang 发表于 2013-8-4 01:36:42

楼主,OpenCV是开源的,下载地址:http://www.opencv.org.cn/index.php/Download
然后解压到任意目录,samples目录下就有大量的例子。

ceoguang 发表于 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')
        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的解码插件?一直在寻找这方面的。

ceoguang 发表于 2013-8-4 02:07:32

回楼上,见http://trac.koka-in.org/libdecodeqr
libdecodeqr同样是开源的,同样使用了OpenCV,多多少少与这个贴扯上了点关系

楼上风云 发表于 2013-8-4 02:34:49

回复 9# ceoguang

谢过超版,直奔链接。
注意休息,身体是革命的本钱。

fangbaiyu 发表于 2013-8-4 08:24:54

图片很撩人 很强大啊

afan 发表于 2013-8-4 10:51:15

不知道LZ的头像能识别不…

chenronting 发表于 2013-8-4 11:02:10

回复 4# rchockxm


    怪了,为什么我这里提示数组错误呢?你那里是什么环境?

chenronting 发表于 2013-8-4 11:04:11

回复 7# ceoguang


    是吗,我这里是WIN7 X64的, 看来得换个环境试试。谢谢提醒 。@.@

chenronting 发表于 2013-8-4 11:15:20

回复 7# ceoguang


    经测试,WIN7X64,无法得到结果,而XP可以。请问超版有什么好的解决方案吗?
页: [1] 2
查看完整版本: 人脸识别功能,从易转AU3