Python+Qt 指紋認証出席システム

Python+Qt 指紋認証出席システム

オペレーティング環境またはリモート デバッグをインストールする必要がある場合は、記事の下部にある個人のQQ名刺を参照してください。専門の技術担当者がリモートで支援します。

序文

このブログは、<<Python+Qt 指紋入力認識出席システム>> のコードを書いています。コードは整然としており、読みやすくなっています。学習とアプリケーションの推奨のための最初の選択肢。

記事ディレクトリ

1. 必要なツール ソフトウェア

2.ステップを使用する

1. ライブラリのインポート

2. 画像の特徴を特定する

3. 走行結果

3. オンラインアシスタンス

1. 必要なツール ソフトウェア

1.Pycharm、パイソン

2.Qt、OpenCV

2.ステップを使用する

1. ライブラリのインポート

コードは次のとおりです (例)。

# coding:utf-8
import sys
import os
import csv
import cv2
import record
import name
from PyQt5 import QtWidgets
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from shutil import copyfile
from sys import exit
import os
from login import *
from register import *

2. 画像の特徴を特定する

コードは次のとおりです (例)。

       name=f.read()
        print("f",name)
        f.close()

        # 均值哈希算法
        def aHash(img):
            # 缩放为8*8
            img = cv2.resize(img, (8, 8), interpolation=cv2.INTER_CUBIC)
            # 转换为灰度图
            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            # s为像素和初值为0,hash_str为hash值初值为''
            s = 0
            hash_str = ''
            # 遍历累加求像素和
            for i in range(8):
                for j in range(8):
                    s = s + gray[i, j]
            # 求平均灰度
            avg = s / 64
            # 灰度大于平均值为1相反为0生成图片的hash值
            for i in range(8):
                for j in range(8):
                    if gray[i, j] > avg:
                        hash_str = hash_str + '1'
                    else:
                        hash_str = hash_str + '0'
            return hash_str

        # 差值感知算法
        def dHash(img):
            # 缩放8*8
            img = cv2.resize(img, (9, 8), interpolation=cv2.INTER_CUBIC)
            # 转换灰度图
            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            hash_str = ''
            # 每行前一个像素大于后一个像素为1,相反为0,生成哈希
            for i in range(8):
                for j in range(8):
                    if gray[i, j] > gray[i, j + 1]:
                        hash_str = hash_str + '1'
            return hash_str

        # Hash值对比
        def cmpHash(hash1, hash2):
            n = 0
            # hash长度不同则返回-1代表传参出错
            if len(hash1) != len(hash2):
                return -1
            # 遍历判断
            for i in range(len(hash1)):
                # 不相等则n计数+1,n最终为相似度
                if hash1[i] != hash2[i]:
                    n = n + 1
            return n

        import os
        path = "fingerDataBase/"
        file_list = os.listdir(path)
        for file in file_list:
            img1 = cv2.imread('temp/new.jpg')
            BasePath="fingerDataBase/" + str(file)
            print("BasePath: ", BasePath)
            img2 = cv2.imread(BasePath)
            print("img2: ",img2)
            hash1 = aHash(img1)

            hash1 = dHash(img1)
            hash2 = dHash(img2)
            print(hash1)
            print(hash2)
            n = cmpHash(hash1, hash2)
            print("n",n)
            print('差值哈希算法相似度:' + str(n))
            result='相似度:' + str(100-n)+", 通过"

3. 実行結果は次のとおりです。

3. オンライン アシスタンス:

オペレーティング環境またはリモート デバッグをインストールする必要がある場合は、 記事の下部にある個人の QQ名刺を参照してください。専門の技術担当者がリモートで支援します。 1) リモートインストール・運用環境、コードデバッグ2) Qt、C++、Python 導入ガイド3) インターフェイス美化4) ソフトウェア制作



ブロガーが推奨する記事: https://blog.csdn.net/alicema1111/article/details/123851014

個人ブログホームページ:https://blog.csdn.net/alicema1111?type=blog

すべてのブロガー記事については、ここをクリックしてください: https://blog.csdn.net/alicema1111?type=blog

おすすめ

転載: blog.csdn.net/alicema1111/article/details/129338432