我正在尝试使用VeriFinger中名为Neurotechnology的SDK处理包含指纹捕获(用于增强)的BMP文件,并将其保存到新的BMP文件中。
VeriFinger附带了一些教程和示例,主要的一个叫做 FingersSampleWX 。
看起来像这样:
按照这个应用程序的源代码作为指南,我能够组装这段应该做我想做的代码,或者我相信:
false
但是,图像不会保存。出于某种原因,行testing
返回test2
。这就是我添加test3
部分的原因。
使用调试器检查GetProcessedImage()
和NULL
的值告诉我:
handle = 0x00000000 isDisposed = false
test1
返回finger
,这非常奇怪,因为Documentation
正确返回 method send-http($url, $http_method) { .... }
对象的文件名。我肯定错过了一些东西......现在已经挣扎了好几个小时了。
VeriFinger是available as a 30-day trial(700MB)。 SDK文档位于CHM和PDF格式的$http_method
文件夹中。
感谢。
答案 0 :(得分:3)
通过仔细阅读示例代码和进行一些阅读,看起来您的问题是两个可能的问题之一。
图像不正确。我找不到比不喜欢的输入图像更多的信息,所以尝试一些不同尺寸的不同输入图像。这就是为什么我问GetImage()
输出到test2 var的原因是什么?如果这不能正常工作,则表明您的输入图像不受欢迎。
在我阅读的所有示例代码中,在对NFinger实例执行任何操作之前,NFinger实例似乎已添加到主题中。我不确定这是否会以某种方式修改NFinger实例,因为文档看起来相当轻松。看看NSubject.hpp,它表明手指被添加到FingersCollection中,但似乎没有做更多的事情。
在“测试”部分之前,将指代码添加到主题:
NSubject subject;
subject.SetId("Some Unique String");
subject.GetFingers().Add(finger);
最后,如果不这样做,请查看示例代码中m_biometricClient
变量的使用,特别是初始化,m_biometricClient.SetFingersReturnProcessedImage(true)
看起来很有趣,不是吗!您将在FingersSampleForm.cpp中看到相当多的初始化代码。添加手指后,客户端似乎负责通过任务注册它(请参阅void FingersSampleForm::OnEnroll)
方法并执行nboEnroll
。
答案 1 :(得分:1)
为了使图像保存起作用,首先必须:
定义类型Client::NBiometricClient
使用SetFingersReturnProcessedImage()
作为参数调用其成员函数true
定义类型NSubject
调用其成员函数SetId()
,该函数接受NStringWrapper
类型的参数 - 此类型具有C样式字符串的默认构造函数(以null结尾的char数组),与{{ 1}}来自问题中的例子
调用另一个成员函数finger.SetFileName()
,并在返回的对象上调用GetFingers()
,使用Add()
作为Add()
类型对象的参数之前已定义(在问题正文中称为NFinger
)
定义类型为finger
的对象,并通过调用步骤1中定义的对象中的另一个成员函数对其进行初始化,该函数为NBiometricTask
并且有两个参数:{{1} }(一个枚举)和CreateTask()
调用其成员函数nboEnroll
并在返回的对象上调用NULL
,使用步骤3中定义的对象GetSubjects()
作为参数
从步骤1中定义的对象调用另一个成员函数,这个是Add()
,使用步骤6中定义的对象作为参数。
在实践中看起来更简单:
Add()
感谢user3791372让我指向了正确的方向。