当前位置: 首页 > news >正文

Python+Qt虹膜检测识别

程序示例精选
Python+Qt虹膜检测识别
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《Python+Qt虹膜检测识别》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果

在这里插入图片描述


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. Python, Qt
       2. Pycharm

二、使用步骤

代码如下(示例):

# coding:utf-8
import sys
import cv2
import cv2 as cv
import numpy as np
from PyQt5 import QtWidgets
class Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(542, 454)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())Dialog.setSizePolicy(sizePolicy)self.gridLayout_2 = QtWidgets.QGridLayout(Dialog)self.gridLayout_2.setObjectName("gridLayout_2")self.pushButton_2 = QtWidgets.QPushButton(Dialog)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.pushButton_2.sizePolicy().hasHeightForWidth())self.pushButton_2.setSizePolicy(sizePolicy)font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(16)self.pushButton_2.setFont(font)self.pushButton_2.setObjectName("pushButton_2")self.gridLayout_2.addWidget(self.pushButton_2, 2, 0, 1, 1) sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())self.frame.setSizePolicy(sizePolicy)self.frame.setFrameShape(QtWidgets.QFrame.Box)self.frame.setFrameShadow(QtWidgets.QFrame.Raised)self.frame.setObjectName("frame")self.gridLayout = QtWidgets.QGridLayout(self.frame)self.gridLayout.setObjectName("gridLayout")self.label = QtWidgets.QLabel(self.frame)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(1)sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())self.label.setSizePolicy(sizePolicy)self.label.setStyleSheet("background-color: rgb(255, 255, 255);")self.label.setAlignment(QtCore.Qt.AlignCenter)self.label.setObjectName("label")self.gridLayout.addWidget(self.label, 0, 0, 1, 1)self.label_2 = QtWidgets.QLabel(self.frame)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(1)sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())self.label_2.setSizePolicy(sizePolicy)self.label_2.setStyleSheet("background-color: rgb(255, 255, 255);")self.label_2.setAlignment(QtCore.Qt.AlignCenter)self.label_2.setObjectName("label_2")self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)self.gridLayout_2.addWidget(self.frame, 0, 1, 8, 1)self.textEdit = QtWidgets.QTextEdit(Dialog)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.textEdit.sizePolicy().hasHeightForWidth())self.textEdit.setSizePolicy(sizePolicy)self.textEdit.setMinimumSize(QtCore.QSize(0, 150))font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(16)self.textEdit.setFont(font)self.textEdit.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)self.textEdit.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)self.textEdit.setObjectName("textEdit")self.gridLayout_2.addWidget(self.textEdit, 4, 0, 1, 1)self.label_3 = QtWidgets.QLabel(Dialog)font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(12)self.label_3.setFont(font)self.label_3.setObjectName("label_3")self.gridLayout_2.addWidget(self.label_3, 3, 0, 1, 1)self.pushButton_6 = QtWidgets.QPushButton(Dialog)font = QtGui.QFont()font.setFamily("微软雅黑")font.setPointSize(16)self.pushButton_6.setFont(font)self.pushButton_6.setObjectName("pushButton_6")self.gridLayout_2.addWidget(self.pushButton_6, 1, 0, 1, 1)spacerItem = QtWidgets.QSpacerItem(17, 153, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)self.gridLayout_2.addItem(spacerItem, 7, 0, 1, 1)self.pushButton = QtWidgets.QPushButton(Dialog)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(1)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
class myWin(QtWidgets.QWidget, Ui_Dialog):def __init__(self):super(myWin, self).__init__()self.setupUi(self)def openFileButton(self):imgName, imgType  = QFileDialog.getOpenFileName(self,"打开文件","./","files(*.*)")img = cv2.imread(img)cv2.imwrite("temp/new.jpg", img)height, width, pixels = img.shapeprint("width,height",width,height)print("self.label.width()",self.label.width())print("self.label.height()",self.label.height())if width>(self.label.width()):rheight=(self.label.width()*height)*widthrwidth=self.label.width()print("rwidth-if,rheight-if", width, rheight)elif height>(self.label.height()):rwidth=(self.label.height()*width)/heightrheight=self.label.height()print("rwidth-elif,rheight-elfi", rwidth, rheight)elif ((self.label.height())-height)<((self.label.width())-width):rwidth=(self.label.height()*width)/heightrheight=self.label.height()print("rwidth-elif,rheight-elfi", rwidth, rheight)_image = QtGui.QImage(img2[:], img2.shape[1], img2.shape[0], img2.shape[1] * 3, QtGui.QImage.Format_RGB888)jpg_out = QtGui.QPixmap(_image).scaled(rwidth, rheight) #设置图片大小self.label.setPixmap(jpg_out) #设置图片显示def saveFileButton(self):img = cv2.imread("temp/new.jpg")file_path = QFileDialog.getSaveFileName(self, "save file", "./save/test","jpg files (*.jpg);;all files(*.*)")print(file_path[0])cv2.imwrite(file_path[0], img)cv2.destroyAllWindows()def Contrast(self):import ospath = "DataBase/"file_list = os.listdir(path)for file in file_list:img1 = cv2.imread('temp/new.jpg')BasePath="DataBase/" + str(file)print("BasePath: ", BasePath)img2 = cv2.imread(BasePath)print("img2: ",img2)sift = cv2.xfeatures2d.SIFT_create()kp1, des1 = sift.detectAndCompute(img1, None)kp2, des2 = sift.detectAndCompute(img2, None)indexParams = dict(algorithm=0, trees=10)searchParams = dict(checks=50)flann = cv2.FlannBasedMatcher(indexParams, searchParams)matches = flann.knnMatch(des1, des2, k=2)matches = sorted(matches, key=lambda x: x[0].distance)print("file:",file)self.textEdit.setPlainText("匹配系数:0.5")self.textEdit_2.setPlainText("匹配成功名称:"+file)print("n: ",n)height, width, pixels = img2.shapeif width > (self.label.width()):rheight = (self.label.width() * height) * widthrwidth = self.label.width()print("rwidth-if,rheight-if", width, rheight)elif height > (self.label.height()):rwidth = (self.label.height() * width) / heightrheight = self.label.height()print("rwidth-elif,rheight-elfi", rwidth, rheight)
if __name__=="__main__":app=QtWidgets.QApplication(sys.argv)Widget=myWin()Widget.showMaximized();Widget.show()sys.exit(app.exec_())
运行结果

在这里插入图片描述

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445

相关文章:

  • git stash 用法总结
  • 【GUI】-- 10 贪吃蛇小游戏之静态面板绘制
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 数据结构 线性表
  • CURL踩坑记录
  • MongoDB相关基础操作(库、集合、文档)
  • c语言:回文字符串
  • LeetCode40. Combination Sum II
  • FlinkCDC实现主数据与各业务系统数据的一致性(瀚高、TIDB)
  • Axure插件浏览器一键安装:轻松享受高效工作!
  • 【广州华锐互动】VR虚拟现实技术助力太空探险:穿越时空,探索宇宙奥秘
  • 源启容器平台KubeGien 打造云原生转型的破浪之舰
  • skywalking中gateway的拓扑图没有出现
  • quickapp_快应用_requestHeader
  • git进阶使用《多账号管理》
  • const let
  • css选择器
  • java 多线程基础, 我觉得还是有必要看看的
  • Java程序员幽默爆笑锦集
  • Linux CTF 逆向入门
  • MySQL QA
  • Redis在Web项目中的应用与实践
  • SpringCloud集成分布式事务LCN (一)
  • TypeScript迭代器
  • 程序员该如何有效的找工作?
  • 前端js -- this指向总结。
  • 如何胜任知名企业的商业数据分析师?
  • 使用 Docker 部署 Spring Boot项目
  • 数组的操作
  • 我是如何设计 Upload 上传组件的
  • #1014 : Trie树
  • #预处理和函数的对比以及条件编译
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net连接MySQL的方法
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @vue/cli 3.x+引入jQuery
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Apio2012]dispatching 左偏树
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法