如果我们假设每个指纹都是由同心曲线(椭圆或圆圈)组成 - 而且我知道不是每个指纹都是 - 我怎样才能找到那些同心曲线的中心?
让我们采用这种"理想"的指纹,试着找出它的中心......

我的方法是尝试:
虽然这些方法适用于现有的一些,但通过一些额外的过滤,它们会失败,因为指纹"不像这个那样理想".你能想到任何不同的方法吗?有标准的方法吗?
编辑1我现在非常喜欢Zack的想法,并希望有人能够更清楚地知道如何做到这一点......
编辑2我希望有人更多地阐述了扎克的想法.赏金给了扎克.
编辑3指纹,其中曲线中心接近指纹外的脊.

有没有办法使用指纹对网站进行身份验证?
我正在考虑以下场景。
然而,这似乎非常没有安全感。获取别人指纹的 jpg 并将其转换为相同的 ISO 19794-2 模板并不困难。然后,可以通过将用户 ID 和模板发送到网站来以编程方式登录网站。
是否有安全的算法/设计允许人们使用指纹登录网站?
我想将a转换为vector<vector<double> >,Mat因为我需要对此值应用自定义平滑滤镜.
下图显示了CORRECT值

我试过这个.
std::vector<std::vector<double> > angles;
calculateAngles(angles);
Mat matAngles(angles.size(), angles.at(0).size(), CV_64FC1, angles.data());
Run Code Online (Sandbox Code Playgroud)
但是第一列中的值被错误转换,值为2.12566e-314.
结果图像

我也尝试将值直接放入Mat.
void calculateAngles(cv::Mat& im, cv::Mat& angles, int blockSize, int(*f)(int x, int y), int(*g)(int x, int y)){
static int ySobel[3][3] = {{-1, 0, 1}, {-2, 0, 2}, {-1, 0, 1}};
static int xSobel[3][3] = {{-1, -2, -1}, {0, 0, 0}, {1, 2, 1}};
angles.create(cv::Size(im.cols/blockSize+1, im.rows/blockSize+1), CV_64FC1);
int nominator;
int denominator;
int GX, GY;
double angle;
for(int i = 1; i …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Java程序与生物特征指纹考勤设备连接。我正在使用的设备是Pegasus T5指纹扫描仪。不幸的是,他们针对该设备的SDK(可以在此处下载)仅涵盖C#、. Net和VB,而我没有专门知识。当我要求制造商时,他们回答说该设备没有Java SDK。即使我不了解这些语言中的任何一种,我仍然尝试理解SDK中的代码,以查找设备的连接方式,并且我发现它只是使用网络ip和端口与设备建立连接。数。
如果引用设备的C#SDK,则可以在frmEvent.cs上看到我在此看到的示例,该示例
中的cmdStartMoniter_Click方法按如下所示进行连接。
bRet = bpc.StartEventCapture(0, util.pubIPAddrToLong(txtSourceIP.Text), Convert.ToInt32(txtPortNumber.Text));
Run Code Online (Sandbox Code Playgroud)
这是指该方法出现在.dll文件中的方法StartEventCapture,public virtual bool StartEventCapture(int dwCommType, int dwParam1, int dwParam2);并且由于我对如何弄清楚代码有进一步的了解,因此我迷失了方向。
不管怎样,我都想着这个例子,下一步,我开始研究有关如何使用指纹设备进行连接,发送和检索数据的全球标准,但我再次没有足够的幸运找到一个清晰的解决方案。但是,在一些尝试处理相同问题的人的一些示例以及我自己看到的示例中,我尝试通过创建Socket对象来与设备连接,但是当我执行该对象时,它只能通过java.net.ConnectException: Connection timed out: connect
有四个问题
Socket是一种解决方案,那么我应该向该设备发送任何具体的标准请求,以便接收来自该设备的响应吗?这是我用来连接设备的代码。
String host = "192.168.168.100";
int port = Integer.parseInt("5005");
try {
Socket socket = new Socket(host, port);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line; …Run Code Online (Sandbox Code Playgroud) 我想在C#项目中包含所有需要的dll,所以你不需要将它们复制到system32并注册它们.
我尝试过costura.fody和其他方式,但我不能让它工作......
我在项目中创建了一个"libs"文件夹,然后我复制了所有的dll.然后我添加一个这个DLL(另一个是依赖,我知道)作为参考.
但我得到这个错误:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in myapp.exe
Additional information: Could not retrieve COM class generator for component {00853A19-BD51-419B-9269-2DABE57EB61F} Due to the following error: 80040154 Unregistered class (Exception of HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Run Code Online (Sandbox Code Playgroud)
当我将所有dll复制到我的system32文件夹并注册其中一个时:
regsvr32 %windir%\system32\zkemkeeper.dll
Run Code Online (Sandbox Code Playgroud)
一切顺利......
编辑:
正如我所说,zkteco(生物识别扫描仪)的sdk有多个dll.但我只能添加一个作为参考.其他人抛出我的下一个错误:
A reference to XXX.dll could not be added. Please make sure that the file is accesible, and that it is a valid assembly or COM component.
所以我不知道这里有什么问题......
dll的:
我的参考:
每个libs的属性:
我的文件夹包含所有dll:
每个libs的属性:
有没有可能的方法将指纹生物识别设备连接到网站..?
我创建了一个基于Web的ERP系统.根据客户要求,我需要集成指纹记录系统.我的网站是用C#和angular2开发的.
我尝试了很多sdks,但没有任何效果如我所料.
这是我第一次在这里问一些我似乎无法找到答案的问题.基本上,我创建了一个系统,可以接受一个人的指纹并将他/她登录到系统中.但随着时间的推移,我有数千条记录,指纹搜索变得比以往慢得多.
我所做的基本过程就是从表中选择所有生物识别数据,在我的代码中,我使用foreach循环逐个进行,因为指纹模板将其比较为教,直到它得到正确的.
你能提供一些提示让我的选择更快吗?任何帮助,将不胜感激.
using (conn = new SqlConnection(connString)) {
conn.Open();
using (comm = new SqlCommand("EXEC dbn.sp_opd_selectBiometrics", conn)) {
using (adap = new SqlDataAdapter(comm)) {
using (dt = new DataTable()) {
adap.Fill(dt);
if (dt.Rows.Count > 0) {
foreach (DataRow dr in dt.Rows) {
//Deserialize fingerprint template to bytes for verification
try {
byte[] _img = (byte[])dr["biometrics"];
string byteBiometrics = Encoding.UTF8.GetString(_img, 0, _img.Length);
getHcode = (string)dr["hpercode"];
MemoryStream ms = new MemoryStream(_img);
Template = new DPFP.Template();
Template.DeSerialize(ms);
Verificator = new DPFP.Verification.Verification(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 adb 命令行将指纹注册到 android 模拟器。
我知道我可以使用以下命令设置 PIN:
adb shell locksettings set-pin 1111
Run Code Online (Sandbox Code Playgroud)
我可以这样输入安全设置:
adb shell am start -a android.settings.SECURITY_SETTINGS
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方式将指纹触摸到传感器:
adb -e emu finger touch 1
Run Code Online (Sandbox Code Playgroud)
但有没有办法录入指纹呢?谢谢你!!
我想将指纹集成到我的项目的身份验证过程中,然后保存并比较该指纹。
我尝试过集成几段代码,但到目前为止还没有成功。如何在 Android 应用程序中保存和比较指纹?
如何计算认证设备的FAR和FRR?(我假设使用的是生物识别技术).否则,他们对该主题的任何统计数据都很容易获得?
biometrics ×10
fingerprint ×5
c# ×3
security ×3
android ×2
adb ×1
angular ×1
c++ ×1
dll ×1
java ×1
networking ×1
opencv ×1
sdk ×1
sockets ×1
sql-server ×1
t-sql ×1
vector ×1
web ×1