导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2018/5/15 9:13:12
标题:
32位和64位调用c++的DLL,以及图片相关的问题
浏览:3284
加入我的收藏
楼主:
最近利用某某公司的sdk开发人脸识别项目,遇到一奇葩问题: 首先是从视频流抽帧,做人脸检测并提取特征,32位下一切正常,切换成64位会出现很频繁的内错错误,也就是某些图片处理不了。 奇怪的是相同的图片,c++调用相同的dll没问题,以为是图片处理过程中出现的差异,然后我将c++处理图片的过程也封装成dll,结果依然。 传递给dll的图像参数是处理好的内错地址,请教熟悉32-64位的技术大牛 var p:pbyte; begin p:=getmem(p,size); .......... end;
----------------------------------------------
-
作者:
2018/5/15 9:15:50
1楼:
以为是图片的问题,用了GDI+将图片又转换了一次,结果还是有报错的帧。
----------------------------------------------
-
作者:
2018/5/15 9:22:23
2楼:
C++函数声明也要给一下啊,让大家竞猜吗
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
2018/5/15 11:03:46
3楼:
@武稀松 感谢指正,下面是函数声明,AFR_FSDK_ExtractFRFeature是特征提取函数 MHandle = Pointer; MInt32 = Integer; AFR_FSDK_OrientCode = MInt32; __tag_ASVL_OFFSCREEN = record u32PixelArrayFormat: MUInt32; i32Width: MInt32; i32Height: MInt32; ppu8Plane: array [0 .. 3] of PByte;// * ppu8Plane[4]; pi32Pitch: array [0 .. 3] of MInt32; end; asvloffscreen = __tag_ASVL_OFFSCREEN; {$EXTERNALSYM ASVLOFFSCREEN} LPASVLOFFSCREEN = ^__tag_ASVL_OFFSCREEN; {$EXTERNALSYM LPASVLOFFSCREEN} AFR_FSDK_FACEINPUT = record rcFace: MRECT; //The bounding box of face lOrient: AFR_FSDK_OrientCode; //The orientation of face end; LPAFR_FSDK_FACEINPUT = ^AFR_FSDK_FACEINPUT; function AFR_FSDK_ExtractFRFeature( hEngine: MHandle; //[in] The face recognition engine pInputImage: LPASVLOFFSCREEN; //[in] The input face images used to enroll pFaceRes: LPAFR_FSDK_FACEINPUT; //[in] The faces'position and orientation //[out] The face feature information: FaceModels: LPAFR_FSDK_FACEMODEL): MRESULT; Cdecl; external ArcRecognitionDll;
----------------------------------------------
-
作者:
2018/5/15 11:04:37
3楼:
竞猜就算了,还没奖品。 楼主应该吧 SDK 和你写的 DEMO 一起发出来。 我们给你运行看看。找出代码错误。 否则的话,有奖竞猜,我们都懒得参加。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/15 11:58:11
4楼:
兰州你只贴你自己的代码有啥用? sdk的定义呢? 另外,初步猜测,如果c那边用的是int32的话,那你这边的问题就出在integer那里
----------------------------------------------
--
作者:
2018/5/15 12:47:17
5楼:
上面贴的就是sdk的定义啊
----------------------------------------------
-
作者:
2018/5/15 12:50:04
6楼:
typedef signed int MInt32; typedef unsigned int MUInt32; c++用的是int
----------------------------------------------
-
作者:
2018/5/15 13:03:29
4楼:
附件是报错详情,相同的sdk,相同的图片,32位一切正常,64位有的图片可以有的图片报错,报错内容一样。
此帖子包含附件: 大小: 21.5K
----------------------------------------------
-
作者:
2018/5/15 13:07:02
7楼:
多半是不乐意提供 DEMO 代码了。 无所谓。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/15 13:24:33
8楼:
代码我很乐意提供的。。。,只是动态库文件体积很大,这里存不下 稍后我放到网盘一份。
----------------------------------------------
-
作者:
2018/5/15 14:37:51
9楼:
兰州不是说sdk是c++的么? 怎么贴出来成了pascal的了? 如果是兰州自己翻译的,兰州自己都说了有问题,那你还贴这个有问题的代码出来能看出什么? 再有就是,贴的异常的图,这个是浮点运算的异常。具体看你编译器的版本。 具体有可能出现的问题: 一:使用了com组件但是没有初始化com组件库。 二:浮点数溢出了。 三:如果调用了opengl和directshow库,需要考虑是否是这两个库存在冲突问题。我记忆中好像从2009~xe3都存在问题。 对于问题一,自己去初始化com组件库。 问题二:检查自己的代码 问题三:考虑更换编译器版本。或者直接禁用浮点异常: nSaved8087CW := Default8087CW; /// 保存原设置 Set8087CW($133f); /// 禁用所有fpu异常 ... /// 自己的业务代码 Set8087CW(nSaved8087CW); /// 回复设置
----------------------------------------------
--
作者:
2018/5/15 15:11:31
10楼:
链接:https://pan.baidu.com/s/16h6teBkjGQCh3Q2fQ9gOGQ 密码:b02f
----------------------------------------------
-
作者:
2018/5/15 15:19:16
11楼:
demo已经上传到网盘了,附带了delphi10.2的demo以及c++2013的demo
----------------------------------------------
-
作者:
2018/5/15 15:29:10
12楼:
to bahamut8348: 禁用浮点异常尝试了,结果还是会报错。
----------------------------------------------
-
作者:
2018/5/15 16:12:06
13楼:
上面是说发C++声明和调用,不是你翻译过的D声明和调用,当然都发出来两两比较更容易查错 然后发了个300多M的网盘,偶表示不想下载。
----------------------------------------------
-
作者:
2018/5/15 16:13:56
14楼:
明天就下载完,后天告诉楼主解决办法,如果有的话。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/15 17:22:43
15楼:
个人更倾向于,厂家的64位DLL有问题
----------------------------------------------
一卡通专家的中专家www.cnduh.com
作者:
2018/5/15 17:44:22
16楼:
to err0rc0de:文件确实比较大,附带了两种语言的32和64位环境 to www12345:厂家的64位C++DEMO没问题 to wang_80919:万分感谢,期待解决方法
----------------------------------------------
-
作者:
2018/5/15 18:10:54
15楼:
楼主 C++ 的 DEMO 我完全不懂。 请 写一个 调用过程和 DELPHI 一模一样的的 C++ DEMO。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/15 18:13:05
17楼:
to wang_80919:有这个必要么,如果有vs2013的话可以直接编译。
----------------------------------------------
-
作者:
2018/5/15 18:51:22
18楼:
你 界面都 不一样。 有什么好对比的。 你觉得,我会用 垃圾 VS 吗?
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/15 20:18:01
19楼:
to wang_80919:你都不用它,还让我弄个一样的demo,555 拜托抽空看下吧,我上传了c++的代码,只是方便对c++熟悉的人对比调试,其实只用delphi也可以看出效果,因为32位是非常非常正常的。
----------------------------------------------
-
作者:
2018/5/15 22:25:36
20楼:
看函数原型,好像是虹软的吧? dll函数本身没有问题,只是虹软封装的有些奇葩,理解起来有些费劲。 多看看VC的DEMO,理解理解。 DELPHI调用的确有些陷阱,多看看文档和VC、C#的DEMO (其实也没啥文档,多到论坛看看)。 以前折腾过,现在也记不清楚了。
----------------------------------------------
武汉天气不好
作者:
2018/5/15 23:00:17
21楼:
国内厂商封装的SDK,海康是做的最好的。(海康的人脸识别不单独卖,集成在硬件里面了) 你想到的问题,它都想到了。DEMO、文档一应俱全。 看看DEMO,文档,一两个小时就能上手。 所以海康现在是牛叉的上市公司。 看看虹软的SDK,就知道差了人家一大截。 它也只有免费才有人用,否则谁用它呀。 原来我们公司也打算用它,后来发现很多问题,就放弃了。 推荐楼主购买商业版本。免费版本基本上都达不到实际应用要求。 云从科技的人脸识别,32位、64位CPU、GPU版本都有。离线、在线的都有。 但云从科技对使用的场合有严格的限制。比如飞机场、高铁是不让用的。 测试下来,还是有些问题。譬如用A相机拍摄,B相机进行比对。识别率就差了。 而且对光线也有点敏感。 上海依图的人脸识别也不错。也可以考虑。 但我们公司和他们有竞争关系,所以没有拿到SDK,没有测试过。据说很好。 后来我们公司购买了一家美国公司的人脸识别SDK,效果相当的好。 人脸识别、人脸比对都是在毫秒级的。 对光线明亮、黑暗、抬头、低头、侧脸、不同的相机拍摄的人脸,识别都很好。 公司网址我现在忘记了。 以上供楼主参考。
----------------------------------------------
武汉天气不好
作者:
2018/5/16 8:45:51
22楼:
300多M,不装客户端还不让下。 算了。兰州自己研究吧
----------------------------------------------
--
作者:
2018/5/16 8:55:50
23楼:
to dbyoung:感谢您提供的参考,一看就是前辈,很有借鉴意义,确实用hr的sdk还要自己解决模糊、侧脸等一系列问题;并且官方反应超级慢。 to bahamut8348:心领了。
----------------------------------------------
-
作者:
2018/5/16 11:11:18
24楼:
我只能说,这是 DLL 硬给你的错误。 DELPHI 是无辜的。 DELPHI 默认会提示所有的 Float 错误。 也许 VS 不提示,你也就不知道他发生错误了。 如果你乐意,可以让 DELPHI 也不提示。 //提取人脸特征 OldAEMask := GetExceptionMask; try AEMask := OldAEMask; Exclude(AEMask, exInvalidOp); SetExceptionMask(AEMask); Result := AFR_FSDK_ExtractFRFeature(FFaceRecognitionEngine, @AFaceInput, @AFaceRegion, @tmpFaceModels) = MOK; finally SetExceptionMask(OldAEMask); end;
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/16 12:24:20
25楼:
友情提示,D群里有人开源一个: https://github.com/yhdgs/ArcFaceSDK_Delphi.git 也许有不一样的惊喜。 开工之前,先看看,免的多走弯路
----------------------------------------------
-
作者:
2018/5/16 13:56:35
26楼:
to wang_80919: 按你提供的方案试过了,一样会报错。
此帖子包含附件: 大小: 11.1K
----------------------------------------------
-
作者:
2018/5/16 14:06:59
27楼:
crystalmoon: demo中提供的函数声明就是来源于此。
----------------------------------------------
-
作者:
2018/5/16 14:35:51
26楼:
@crystalmoon (黑夜杀手): 感谢分享, 正在学习ZS
----------------------------------------------
虽千万人吾往矣!
作者:
2018/5/16 14:39:21
28楼:
我用我修改的,编译了一个,你们看看。 他的确不出错了。 Win64 仅仅是修改了图中的错误 ArcBmpTest.zip
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/16 14:39:24
28楼:
to dbyoung:复盘了一下,突然对你提到的那家美国公司非常感兴趣,如果可以希望能提供些资料,比如公司名网址之类的。 因为现在用虹软的sdk,确实遇到写障碍需要自己处理,比如缺少比较核心的人脸图片质量检测等等,官方答复是需要根据自己的业务,可以通过opencv等开源算法做处理,但是我觉得既然我们选择了用sdk,再去触碰底层的一些算法本身就脱离了初衷,我们还是希望能尽快将技术落地到实际业务场景,并不想在底层算法上投入更多精力,毕竟专业的事情交给专业的公司是最合理的资源分配方式。
----------------------------------------------
-
作者:
2018/5/16 14:50:07
29楼:
to wang_80919: 确实脱离IDE直接运行不报错了,但是并没有提取出预期结果, 目前看也仅仅是屏蔽掉了错误。 对比一下32位程序,是可以提取出7个有效特征,64位这样修改虽然不报错了但是只能提取出5个有效特征,有两个人脸的提取报错且被忽略掉了。
----------------------------------------------
-
作者:
2018/5/16 15:19:26
30楼:
我的 EXE 的 KEY 居然不支持你的 DLL。 所以不报错了,根本就没执行。 目前的错误,只能是 DLL 产生的。 而且,只有特殊的内容发生错误。 说明不是你代码的错误,也不是函数定义翻译的问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/16 15:26:50
31楼:
to wang_80919: c++的64位demo,相同的图片人家就不报错,按道理说还是和delphi有关系。
----------------------------------------------
-
作者:
2018/5/16 15:43:43
32楼:
他只是把错误给你忽略了。 或者说。和我的一样,根本就没执行。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/16 17:33:36
33楼:
我暴力修改了。 先试试 已编译的。 现在 32 和 64 都是得到 6个 信息了。 首先, github 上的有错误。 readbmp 根本就读取失败了。 修复了 readbmp之后, 错误提示一模一样的,毫无区别。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/16 20:14:17
34楼:
经过这么久的研究,分析,可能区别在 readbmp 函数上。 也许 VS 的这个地方,读取的内容比较正规,DELPHI 版本的代码,可能写的有 BUG。 另外,to dbyoung:同求 外国高端产品的名字。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/17 8:32:15
35楼:
有段时间了,我来找找看 (虹软的DLL是没有问题的,是DELPHI调用的问题)
----------------------------------------------
武汉天气不好
作者:
2018/5/17 15:39:47
36楼:
不好意思,找不到了。 调试了楼主的代码,BUG 在 ArcFaceSDK.pas 中 TArcFaceSDK.ReadBmp 函数 for i:=0 to AImgDataInfo.Height -1 do begin CopyMemory(AImgDataInfo.pImgData+ i * AImgDataInfo.Width *3, pbyte( mem.Memory) + (AImgDataInfo.Height -1-i)* AImgDataInfo.LineBytes +54, AImgDataInfo.Width*3 ); end; 修改为: for I := 0 to AImgDataInfo.Height - 1 do begin CopyMemory(PByte(Int64(AImgDataInfo.pImgData) + I * AImgDataInfo.i32Width * 3), PByte(Int64(mem.Memory) + (AImgDataInfo.i32Height - 1 - I) * iLineByte + 54), AImgDataInfo.i32Width * 3); end; 就OK了,32位、64位都可以正常工作了。 原因是在64位下pbyte( mem.Memory) 越界了。
----------------------------------------------
武汉天气不好
作者:
2018/5/17 19:53:50
37楼:
虽然楼主可以已经弃楼而逃了。 但是 非常感谢 楼上的高手。 虽然我知道,大概是这里。 但是,是在是没时间去研究,具体位置了。 而且,没想到 Memory 这个地址 不兼容 64位。学习了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/17 20:42:36
38楼:
to dbyoung: 我在demo中的指定位置加了Int64(整段代码复制过去的),奇怪的是怎么还是报错呢,是AImgDataInfo的结构体不一致么,我看你写的是AImgDataInfo.i32Width和AImgDataInfo.i32Height,我的代码是AImgDataInfo.Width。不会到是不是还有其他地方有改动,恳请在指教一下。 to wang_80919:今天一个好朋友的父亲走了,去送了最后一程,楼主并没有弃楼逃跑哈。
----------------------------------------------
-
作者:
2018/5/17 20:50:07
39楼:
for i:=0 to AImgDataInfo.Height -1 do begin CopyMemory(AImgDataInfo.pImgData + i * AImgDataInfo.Width * 3, // //这下面的代码 Memory 64 位 地址越界。 // pbyte( AStream.Memory) + (AImgDataInfo.Height -1-i)* AImgDataInfo.LineBytes +54, PByte(Int64(AStream.Memory)) + (AImgDataInfo.Height - 1 - i) * AImgDataInfo.LineBytes + 54, AImgDataInfo.Width * 3); end;
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/17 21:01:57
40楼:
to wang_80919:我也是这样改的,和之前一样呢。
----------------------------------------------
-
作者:
2018/5/18 8:14:52
41楼:
笔误。 我是按照SDK原有的声明,来写的测试代码。没有使用那个封装好的代码。 我测试了一下你的那个工程,的确还是报错。 原因是因为提取特征值的那行有问题。注释了就OK了。 看来这个头文件翻译的BUG一大堆。 //{$IFDEF DEBUG} // T := GetTickCount; //{$ENDIF} // if not ExtractFaceFeatures(offInput, lFaceRegions, AFaceModels) then // Result := False; //{$IFDEF DEBUG} // DoLog('提取特征耗时:' + IntToStr(GetTickCount - T)); //{$ENDIF} 建议楼主还是自己翻译SDK,写写测试代码,就知道SDK的运作原理了。需要注意哪些细节了。
----------------------------------------------
武汉天气不好
作者:
2018/5/18 8:44:16
42楼:
的确还是发生了错误。 我测试的时候,没 DEBUG。所以,没看到。改不改都一样。 目前已经没有可以怀疑的对象了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/18 11:37:07
43楼:
@cgzcgb 我不知道你的SDK怎么是这样子的,但我git下来的这个TArcFaceSDK.ReadBmp里的代码,不是上面的这样写的。。所以,我不知道是你下错了呢,还是我下错了。。。 下面是Git里的,可以看到,从git日志来看,从2月19日起,就是这么写了。 //读取Bitmap到到图像数据结构 class function TArcFaceSDK.ReadBmp(ABitmap: TBitmap; var AImgDataInfo: TImgDataInfo): Boolean; var iLineByte: Integer; iBitCount: Integer; i: Integer; //获取位深 function GetBitCount: Integer; begin case ABitmap.PixelFormat of pf1bit: Result := 1; pf4bit: Result := 4; pf8bit: Result := 8; pf15bit: Result := 16; pf16bit: Result := 16; pf24bit: Result := 24; pf32bit: Result := 32; else Result := 0; end; end; begin Result := False; AImgDataInfo.Init; AImgDataInfo.BitCount := GetBitCount; if AImgDataInfo.BitCount = 0 then Exit; AImgDataInfo.Width := ABitmap.Width; AImgDataInfo.Height := ABitmap.Height; //获取位图行长度 iLineByte := Trunc((ABitmap.Width * iBitCount / 8 + 3) / 4) * 4; AImgDataInfo.LineBytes := iLineByte; GetMem(AImgDataInfo.pImgData, iLineByte * ABitmap.Height); //读入内存,注意为倒序,从最后一行开始读 for i := ABitmap.Height - 1 downto 0 do begin CopyMemory(Pointer(AImgDataInfo.pImgData + i * iLineByte), ABitmap.ScanLine[i], iLineByte); end; Result := true; end; 另外,这个sdk是 南极土著 开源共享的,也可以在Delphi人脸识别与检测 群里和群里的高手讨论:576881745
----------------------------------------------
-
作者:
2018/5/18 12:13:28
44楼:
多年前曾使用delphi开发一个小型项目,涉及二代身份证读取,使用的是成都的一家大型公司的身份证读取器及C语言编写的开发库。使用delphi调用库函数,总出现00000000地址读取错误,开发库提供商测试,也出现同样错误。将信息反馈给delphi开发商,回复为:是delphi编译器缺陷。 项目后来改用C++进行开发。这一事件以后的软件开发多使用C++进行开发。 仅供参考。
----------------------------------------------
-
作者:
2018/5/18 12:20:11
45楼:
delphi调用C语言编写的库函数出错并不罕见。intel mkl 新版本,delphi 调用,就会出错。
----------------------------------------------
-
作者:
2018/5/18 12:23:59
44楼:
github 上的 32 位 下不出错。64 下面一样的错误。 关键是 VS 的我懒得去建立环境,无法证明 VS 是不是不报错。 我怀疑 VS 的也报错,但是不提示而已。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/18 12:45:28
44楼:
这段代码,无非就是复制BMP的像素内存。 Delphi 对位图是进行处理过的,已经进行了翻转。 但API没有进行处理,还是倒序的。 所以这地方的循环可以用API函数来代替: GetBitmapBits(ABitmap.Handle, iLineByte * AImgDataInfo.Height, AImgDataInfo.pImgData); 一个API函数就可以了。
----------------------------------------------
武汉天气不好
作者:
2018/5/18 12:56:48
46楼:
//提取人脸特征 OldAEMask := GetExceptionMask; try AEMask := OldAEMask; Include(AEMask, exInvalidOp); SetExceptionMask(AEMask); Result := AFR_FSDK_ExtractFRFeature(FFaceRecognitionEngine, @AFaceInput, @AFaceRegion, @tmpFaceModels) = MOK; finally SetExceptionMask(OldAEMask); end 大家看看,和 24 楼,只有 2 个字符不同。 我这回测试了,铁定能用。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/18 13:46:02
47楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2018/5/18 14:07:46
48楼:
你们俩懂,我们不懂。也懒得懂。 刚才的代码,证明了一件事情。 VS 的 VC 不关心 Invalid Op 。 但这真的是一个错误。一个潜在的问题。 也许楼上说的 DLL BUG 多半和这个类似。
----------------------------------------------
(C)(P)Flying Wang
作者:
drroc (mvcxe)
★☆☆☆☆
-
盒子活跃会员
2018/5/18 17:38:12
49楼:
楼主如果改用D7会少很多事 到后面unicode后的delphi,调用c/c++ dll有时会很奇葩 不是说你的情况就一定是这样,我没下载你的demo和sdk,只是按经验推断,给点意见
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
作者:
2018/5/18 18:44:34
50楼:
楼上,你的 垃圾 D7,调用不了,现成的代码,人家用了新 版本的 语法 。例如泛型。 你用垃圾 D7,就自己重新封装吧。 更何况,你的垃圾 D7 不支持 WIN64BIT 开发。 而且 人家 问题也没出在你说的几个 弱智点 上。 46楼,就是答案 和 D7 毫无关系。 OldAEMask 在 32 和 64 下 值都是一样的。 说明 32 下的 DLL 他不发生这个错误。 64 下 DLL 发生了错误但是 VS 懒得理会。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/18 19:18:42
51楼:
dbyoung,顶了。刚去百度了 GetBitmapBits 这个函数。。。确实好用。
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/5/18 21:04:14
52楼:
其实可以按照vs的代码改一下,就可以啊
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/5/20 0:04:08
53楼:
我也是闲来无事,来倒腾一下。 根据楼上各位大神的修正及建议,终于作出跟C++一样的效果。 另外想说一下https://github.com/yhdgs/ArcFaceSDK_Delphi.git确定可以编译吗? 起码我用了楼主SDK改了非常多,然后对比了一下github上面,发现应该好多错误吧。 废话不多说,直接上图:
此帖子包含附件: 大小: 252.5K
----------------------------------------------
-
作者:
2018/5/20 0:10:36
54楼:
附个32位的EXE上来,64位平台我没有安装。 有时间的话,还可以倒腾一下用摄像头来核对人像库
----------------------------------------------
-
作者:
2018/5/20 11:06:16
55楼:
to nickemma: https://github.com/yhdgs/ArcFaceSDK_Delphi.git 确实有错误,但是你不要觉得可以编译做出和c++相同效果就完美了,我遇到的问题是64位某些图片会报错。
----------------------------------------------
-
作者:
2018/5/20 11:12:31
56楼:
to dbyoung: GetBitmapBits果然好用 to wang_80919: 看来还是你说对了,确实问题解决了,大赞! 有些时候不经意的一个小地方就会冒出来一个大坑,通过这次的问题又学到了不少东西!再次感谢wang_80919。
----------------------------------------------
-
作者:
2018/5/20 11:15:13
56楼:
@cgzcgb 至于64位平台是否出错,没有测试。但是readbmp部分全改了,采用了GetBitmapBits函数方式 而且所有头文件根据官方全部重写的,ArcFaceSDK也修正好多好多。 其实可以说差不多是重写过了,您百度的源码的也只是参考而已。 起码32位上面是完美的,没有出错,没有内存泄露。
----------------------------------------------
-
作者:
2018/5/20 11:25:21
57楼:
to nickemma: GetBitmapBits发现有些图片ArcFaceSDK检测不到人脸,按c++提供的方式没有问题,具体原因不详。 按wang_80919提供的方法确实解决了win64位的问题,也就声明了他们的sdk对于64位确实有浮点运算异常,只不过vs给过滤掉了。
----------------------------------------------
-
作者:
2018/5/20 12:09:38
58楼:
@cgzcgb 你最好附上识别不出的图片上来。 总之我测试Delphi识别不出来的,C++也同样识别不出
----------------------------------------------
-
作者:
2018/5/24 13:30:12
59楼:
为啥,楼主消失了? 因为被开除了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/29 13:29:32
60楼:
@wang_80919 哈哈,这都被你猜到啦,有人收留没
----------------------------------------------
-
作者:
2018/5/29 13:35:46
61楼:
to nickemma: 造福一下后来人,如果可以希望能把最新的sdk声明文件共享出来 目前问题已经解决,也把浮点异常的问题反馈给了官方,但是。。他们好像动作很慢 再次感谢wang_80919以及上面的各位大咖。
----------------------------------------------
-
作者:
2018/5/29 13:37:18
62楼:
你自己的代码,也能用了,就不需要他们的代码了。
----------------------------------------------
(C)(P)Flying Wang
作者:
gyh75 (ggg)
★☆☆☆☆
-
盒子活跃会员
2018/5/30 13:15:19
63楼:
delphi开发的相关系统,大家可以关注下。 上位机开发之家:http://shangweiji.lofter.com
----------------------------------------------
-
作者:
2018/6/6 9:50:41
64楼:
欢迎对人脸检测、识别有需要或有兴趣的同学加入 576881745 一起研究、学习、分享
----------------------------------------------
-