gpt4 book ai didi

c# - 使用 DigitalPersona 4500 读取器进行指纹扫描。如何获取捕获的图像和加载事件处理程序

转载 作者:行者123 更新时间:2023-11-30 23:10:10 25 4
gpt4 key购买 nike

我刚开始使用 C# 编写生物识别传感器和 DLL 代码。我使用的是 DigitalPersona 阅读器 UareU 4500。我阅读了 API 文档并查看了他们提供的示例程序。但是,我对使用 GUI 版本不感兴趣。我想使用 API 方法。我搜索了示例,但找不到任何描述性示例。请帮忙。

我的问题是如何设置加载事件处理程序以及如何获取位图图像中的指纹。

提前致谢。非常感谢任何信息或指南。

class FingerprintScanning
{
public DPFP.Capture.Capture fingerprint = new DPFP.Capture.Capture();
public DPFP.Sample sample = new DPFP.Sample();
public DPFP.Capture.EventHandler EventHandler;
public Bitmap picture_result = null;


public void CaptureFingerprint()
{
fingerprint.StartCapture();

//Events
EventHandler.OnFingerTouch(fingerprint,fingerprint.ReaderSerialNumber);
EventHandler.OnComplete(fingerprint,fingerprint.ReaderSerialNumber,sample);

//Convert to Bitmap
SampleConversion image = new SampleConversion();
image.ConvertToPicture(sample, ref picture_result);
fingerprint.StopCapture();

}

最佳答案

我找到了使用 SDK 的 API 的示例。在这里分享以防任何人需要在类似的项目中实现。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Enrollment
{
/* NOTE: This form is a base for the EnrollmentForm and the VerificationForm,
All changes in the CaptureForm will be reflected in all its derived forms.
*/
public partial class CaptureForm : Form, DPFP.Capture.EventHandler
{
public CaptureForm()
{
InitializeComponent();
}

protected virtual void Init()
{
try
{
Capturer = new DPFP.Capture.Capture(); // Create a capture operation.

if ( null != Capturer )
Capturer.EventHandler = this; // Subscribe for capturing events.
else
SetPrompt("Can't initiate capture operation!");
}
catch
{
MessageBox.Show("Can't initiate capture operation!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

protected virtual void Process(DPFP.Sample Sample)
{
// Draw fingerprint sample image.
DrawPicture(ConvertSampleToBitmap(Sample));
}

protected void Start()
{
if (null != Capturer)
{
try
{
Capturer.StartCapture();
SetPrompt("Using the fingerprint reader, scan your fingerprint.");
}
catch
{
SetPrompt("Can't initiate capture!");
}
}
}

protected void Stop()
{
if (null != Capturer)
{
try
{
Capturer.StopCapture();
}
catch
{
SetPrompt("Can't terminate capture!");
}
}
}

#region Form Event Handlers:

private void CaptureForm_Load(object sender, EventArgs e)
{
Init();
Start(); // Start capture operation.
}

private void CaptureForm_FormClosed(object sender, FormClosedEventArgs e)
{
Stop();
}
#endregion

#region EventHandler Members:

public void OnComplete(object Capture, string ReaderSerialNumber, DPFP.Sample Sample)
{
MakeReport("The fingerprint sample was captured.");
SetPrompt("Scan the same fingerprint again.");
Process(Sample);
}

public void OnFingerGone(object Capture, string ReaderSerialNumber)
{
MakeReport("The finger was removed from the fingerprint reader.");
}

public void OnFingerTouch(object Capture, string ReaderSerialNumber)
{
MakeReport("The fingerprint reader was touched.");
}

public void OnReaderConnect(object Capture, string ReaderSerialNumber)
{
MakeReport("The fingerprint reader was connected.");
}

public void OnReaderDisconnect(object Capture, string ReaderSerialNumber)
{
MakeReport("The fingerprint reader was disconnected.");
}

public void OnSampleQuality(object Capture, string ReaderSerialNumber, DPFP.Capture.CaptureFeedback CaptureFeedback)
{
if (CaptureFeedback == DPFP.Capture.CaptureFeedback.Good)
MakeReport("The quality of the fingerprint sample is good.");
else
MakeReport("The quality of the fingerprint sample is poor.");
}
#endregion

protected Bitmap ConvertSampleToBitmap(DPFP.Sample Sample)
{
DPFP.Capture.SampleConversion Convertor = new DPFP.Capture.SampleConversion(); // Create a sample convertor.
Bitmap bitmap = null; // TODO: the size doesn't matter
Convertor.ConvertToPicture(Sample, ref bitmap); // TODO: return bitmap as a result
return bitmap;
}

protected DPFP.FeatureSet ExtractFeatures(DPFP.Sample Sample, DPFP.Processing.DataPurpose Purpose)
{
DPFP.Processing.FeatureExtraction Extractor = new DPFP.Processing.FeatureExtraction(); // Create a feature extractor
DPFP.Capture.CaptureFeedback feedback = DPFP.Capture.CaptureFeedback.None;
DPFP.FeatureSet features = new DPFP.FeatureSet();
Extractor.CreateFeatureSet(Sample, Purpose, ref feedback, ref features); // TODO: return features as a result?
if (feedback == DPFP.Capture.CaptureFeedback.Good)
return features;
else
return null;
}

protected void SetStatus(string status)
{
this.Invoke(new Function(delegate() {
StatusLine.Text = status;
}));
}

protected void SetPrompt(string prompt)
{
this.Invoke(new Function(delegate() {
Prompt.Text = prompt;
}));
}
protected void MakeReport(string message)
{
this.Invoke(new Function(delegate() {
StatusText.AppendText(message + "\r\n");
}));
}

private void DrawPicture(Bitmap bitmap)
{
this.Invoke(new Function(delegate() {
Picture.Image = new Bitmap(bitmap, Picture.Size); // fit the image
into the picture box
}));
}

private DPFP.Capture.Capture Capturer;

}
}

关于c# - 使用 DigitalPersona 4500 读取器进行指纹扫描。如何获取捕获的图像和加载事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45493824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com