我正在尝试使用名为 VeriFinger 的 SDK , 来自 Neurotechnology , 处理包含指纹捕获的 BMP 文件(用于增强),并将其保存到新的 BMP 文件。
VeriFinger 附带了一些教程和示例,主要的一个称为 FingersSampleWX。
看起来像这样:
按照此应用程序的源代码作为指导,我能够组装这段代码,应该做我想做的,或者我相信:
#include <iostream>
#include <NLicensing.hpp>
#include <NMedia.hpp>
#include <NBiometrics.hpp>
using namespace Neurotec::Biometrics;
using namespace Neurotec::Images;
using namespace Neurotec::Licensing;
int main()
{
if (NLicense::ObtainComponents("/local", "5000", "Biometrics.FingerExtraction"))
std::wcout << L"License OK\n";
else
std::wcout << L"License fail\n";
NFinger finger;
finger.SetFileName("F:\\input\\000001\\MDT1.BMP");
finger.SetPosition(nfpUnknown);
finger.SetImpressionType(nfitNonliveScanPlain);
// testing
auto test1 = finger.GetFileName();
auto test2 = finger.GetImage();
auto test3 = finger.GetProcessedImage();
NImage image(NULL);
if (finger.GetHandle())
{
image = finger.GetProcessedImage();
if (image.GetHandle())
image.Save("F:\\output\\000001\\MDT1_out.bmp");
}
NLicense::ReleaseComponents("Biometrics.FingerExtraction");
}
但是,图像不会保存。出于某种原因,行 if (image.GetHandle())
返回 false
。这就是我添加 testing
部分的原因。
使用调试器检查 test2
和 test3
的值告诉我:
handle=0x00000000 isDisposed=false
GetProcessedImage()
返回NULL
,这很奇怪,因为test1
返回的是手指
的文件名> 正确反对。我确定遗漏了一些东西......现在已经为此苦苦挣扎了几个小时。
VeriFinger 是 available as a 30-day trial (700MB)。 SDK 文档以 CHM 和 PDF 格式位于 Documentation
文件夹中。
谢谢。
最佳答案
通过仔细阅读示例代码和进行一些阅读,您的问题似乎是两个可能的问题之一。
要么图像不正确。我找不到比不喜欢的输入图像更多的信息,所以尝试一些不同尺寸的不同输入图像。这就是为什么我问 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
的操作。
关于c++ - 无法使用 VeriFinger 保存处理过的指纹图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918095/