使用VeriFinger无法保存已处理的指纹图像

时间:2015-10-03 01:42:32

标签: c++ image-processing fingerprint

我正在尝试使用VeriFinger中名为Neurotechnology的SDK处理包含指纹捕获(用于增强)的BMP文件,并将其保存到新的BMP文件中。

VeriFinger附带了一些教程和示例,主要的一个叫做 FingersSampleWX

看起来像这样:

FingersSampleWX screenshot

按照这个应用程序的源代码作为指南,我能够组装这段应该做我想做的代码,或者我相信:

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文件夹中。

感谢。

2 个答案:

答案 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)

为了使图像保存起作用,首先必须:

  1. 定义类型Client::NBiometricClient

  2. 的对象
  3. 使用SetFingersReturnProcessedImage()作为参数调用其成员函数true

  4. 定义类型NSubject

  5. 的对象
  6. 调用其成员函数SetId(),该函数接受NStringWrapper类型的参数 - 此类型具有C样式字符串的默认构造函数(以null结尾的char数组),与{{ 1}}来自问题中的例子

  7. 调用另一个成员函数finger.SetFileName(),并在返回的对象上调用GetFingers(),使用Add()作为Add()类型对象的参数之前已定义(在问题正文中称为NFinger

  8. 定义类型为finger的对象,并通过调用步骤1中定义的对象中的另一个成员函数对其进行初始化,该函数为NBiometricTask并且有两个参数:{{1} }(一个枚举)和CreateTask()

  9. 调用其成员函数nboEnroll并在返回的对象上调用NULL,使用步骤3中定义的对象GetSubjects()作为参数

  10. 从步骤1中定义的对象调用另一个成员函数,这个是Add(),使用步骤6中定义的对象作为参数。

  11. 在实践中看起来更简单:

    Add()

    感谢user3791372让我指向了正确的方向。