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

11.6学习日志

PySimpleGUI 库

PySimpleGUI 是一个用于简化 GUI 编程的 Python 包,它封装了多种底层 GUI 框架(如 tkinter、Qt、WxPython 等),提供了简单易用的 API。PySimpleGUI 包含了大量的控件(也称为小部件或组件),这些控件可以帮助你快速构建用户界面

安装

pip install pysimplegui

布局和窗口

import PySimpleGUI as sgdef windows():# 定义布局layout = [[sg.Text('你好')],[sg.Button('关闭')]]# 创建窗口window = sg.Window('我的窗口', layout)# 事件循环while True:event, values = window.read()# 点击X和退出按钮,关闭窗口if event in (None, "关闭"):break# 关闭窗口window.close()def texts():# 定义布局layout = [[sg.Text("编号:", size=(10, 1)), sg.InputText(key='id')],[sg.Text("姓名:", size=(10, 1)), sg.InputText(key='name')],[sg.Text(key="text")],[sg.Button('保存'), sg.Button('关闭')]]# 创建窗口window = sg.Window('我的窗口', layout)# 事件循环while True:event, values = window.read()if event in (sg.WIN_CLOSED, '关闭'):break# 确保values中包含有效的输入id_value = values.get('id')  # 使用.get()来获取值,避免None值的错误name = values.get('name')if event == '保存' and id_value is not None:print(f'id={id_value}')print(f'name={name}')window['text'].update(f'id={id_value},name={name}')window.close()if __name__ == '__main__':# windows()texts()

 视频处理

import cv2
import PySimpleGUI as sgdef demo():cap = cv2.VideoCapture(0)if not cap.isOpened():print('没有开启摄像头')return# 创建layoutlayout = [[sg.Image(key='video')],[sg.Button('关闭')]]# 创建窗口window = sg.Window('视频处理',layout)while True:# 读取数据和事件event,value = window.read(timeout=10)# 读取数据帧ret,frame = cap.read()if event in ('关闭',None) :breakif ret:img_type = cv2.imencode('.png',frame)[1].tobytes()print(img_type)window['video'].update(img_type)cap.release()window.close()if __name__ == '__main__':demo()

 图片上传

import cv2
import PySimpleGUI as sgdef demo():# 创建layoutlayout = [[sg.Image(key='-IMAGE-')],[sg.Input(key='-FILE-', enable_events=True),sg.FileBrowse(file_types=(("Image Files", "*.png;*.jpg;*.jpeg;*.gif"),))],[sg.Button('上传'), sg.Button('关闭')]]# 创建窗口window = sg.Window('文件处理',layout)while True:# 读取数据和事件event,value = window.read()if event in ('关闭',None) :breakif event == '上传':# 更新图片image_path = value['-FILE-']print(image_path)img = cv2.imread(image_path)if img is None:sg.popup_error(f"无法加载图像:{image_path}\n请确保文件路径正确且文件不是损坏的!")continue  # 跳过后续代码,重新等待用户选择有效的图像img_type = cv2.imencode(".png", img)[1].tobytes()window['-IMAGE-'].update(img_type)window.close()if __name__ == '__main__':demo()

pymsql 库

PyMySQL 是一个用于连接 MySQL 数据库的纯 Python 实现。它允许 Python 程序与 MySQL 数据库进行交互,执行 SQL 查询,并处理结果集

安装

pip install pymysql

数据处理

import pymysql# 新增
def add(name,num):# 创建数据库连接con = pymysql.connect(host= 'localhost',# 数据库地址user = 'root',# 用户名passwd = 'shijianxu123',# 密码port= 3306,# 端口database= 'demo',# 数据库名charset = 'utf8'# 中文编码)# 创建游标对象,包含了增删改查的函数cur = con.cursor()# 定义sqlsql = 'insert into user_info (user_name,user_num) value (%s,%s)'# 运行sql(增删改查sql的函数)cur.execute(sql,(name,num))# 执行增删改sql的函数,返回一个受行数影响的数值num = cur.rowcountif num > 0:print('新增成功')else:print('新增失败')# 提交con.commit()#释放资源con.close()cur.close()# 查询
def query(num):# 创建数据库连接con = pymysql.connect(host= 'localhost',# 数据库地址user = 'root',# 用户名passwd = 'shijianxu123',# 密码port= 3306,# 端口database= 'demo',# 数据库名charset = 'utf8'# 中文编码)# 创建游标对象,包含了增删改查的函数cur = con.cursor()# 定义sqlsql = 'select * from user_info where user_num = %s'# 运行sql(增删改查sql的函数)cur.execute(sql,(num,))# 查询rs = cur.fetchall()#释放资源con.close()cur.close()if len(rs) > 0:return rs[0][1]else:return'查无此人'def del_num(id):# 创建数据库连接con = pymysql.connect(host= 'localhost',# 数据库地址user = 'root',# 用户名passwd = 'shijianxu123',# 密码port= 3306,# 端口database= 'demo',# 数据库名charset = 'utf8'# 中文编码)# 创建游标对象,包含了增删改查的函数cur = con.cursor()# 定义sqlsql = 'delete from user_info where user_num = %s'# 运行sql(增删改查sql的函数)cur.execute(sql,(id,))# 查询num = cur.rowcount#释放资源if num > 0:print('删除成功')else:print('删除失败')# 提交con.commit()# 释放资源con.close()cur.close()if __name__ == '__main__':# add('王五',1)# add('李四', 2)# rs = query(2)# print(rs) del_num(2)

人脸采集

1 准备工作:创建人脸表

2 完成人脸保存

import pymysql
import cv2
import PySimpleGUI as sg# 人脸入库新增
def add(name,num):# 创建数据库连接con = pymysql.connect(host= 'localhost',# 数据库地址user = 'root',# 用户名passwd = 'shijianxu123',# 密码port= 3306,# 端口database= 'demo',# 数据库名charset = 'utf8'# 中文编码)# 创建游标对象,包含了增删改查的函数cur = con.cursor()# 定义sqlsql = 'insert into user_info (user_name,user_num) value (%s,%s)'# 运行sql(增删改查sql的函数)cur.execute(sql,(name,num))# 执行增删改sql的函数,返回一个受行数影响的数值num = cur.rowcount# 提交con.commit()#释放资源con.close()cur.close()if num > 0:print('新增成功')return Trueelse:print('新增失败')return False# 数据采集窗口
def data_get():cap = cv2.VideoCapture(0)if not cap.isOpened():print('没有开启摄像头')return# 创建layoutlayout = [[sg.Text('编号:'),sg.InputText(key = 'num')],[sg.Text('姓名:'), sg.InputText(key='name')],[sg.Image(key='video')],[sg.Button('关闭'),sg.Button('人脸采集')]]# 创建窗口window = sg.Window('人脸信息采集', layout)while True:# 读取数据和事件event, value = window.read(timeout=10)# 读取视频ret, frame = cap.read()if event in ('关闭', None):breakif ret:img_type = cv2.imencode('.png', frame)[1].tobytes()window['video'].update(img_type)if event =='人脸采集':num = value['num']name = value['name']# 写入人脸图片iss = cv2.imwrite(f'E:/pych/pythonProject_study/image/{num}.png',frame)if iss:is_add = add(name,num)if is_add:sg.popup('人脸采集成功')else:sg.popup('人脸采集失败')cap.release()window.close()if __name__ == '__main__':data_get()

人脸识别

import pymysql
import cv2
import PySimpleGUI as sg
import face_recognition
import os
import numpy as np# 查询
def query(num):# 创建数据库连接con = pymysql.connect(host= 'localhost',# 数据库地址user = 'root',# 用户名passwd = 'shijianxu123',# 密码port= 3306,# 端口database= 'demo',# 数据库名charset = 'utf8'# 中文编码)# 创建游标对象,包含了增删改查的函数cur = con.cursor()# 定义sqlsql = 'select * from user_info where user_num = %s'# 运行sql(增删改查sql的函数)cur.execute(sql,(num,))# 查询rs = cur.fetchall()#释放资源con.close()cur.close()if len(rs) > 0:return rs[0][1]else:return'查无此人'# 数据采集窗口
def data_get():cap = cv2.VideoCapture(0)if not cap.isOpened():print('没有开启摄像头')return# 创建layoutlayout = [[sg.Image(key='video')],[sg.Button('关闭'),sg.Button('人脸识别')]]# 创建窗口window = sg.Window('人脸识别', layout)# 标记是否已经成功识别recognition_success = Falsewhile True:# 读取数据和事件event, value = window.read(timeout=10)# 读取视频ret, frame = cap.read()if event in ('关闭', None):breakif ret:img_type = cv2.imencode('.png', frame)[1].tobytes()window['video'].update(img_type)if event =='人脸识别':# 查找人脸库list_dir = os.listdir('E:/pych/pythonProject_study/image')if len(list_dir)>0:for i in list_dir:# 读取一个图片对象img = cv2.imread(f'E:/pych/pythonProject_study/image/{i}')if img is None:print('图片为空')breakelse:# 获取已知图片的特征变量en1 = face_recognition.face_encodings(img)[0]# 获取需要检测图片的特征变量en2 = face_recognition.face_encodings(frame)[0]# 计算欧几里得距离rs = np.linalg.norm(en1-en2)print(rs)if rs < 0.5:a = query(i)sg.popup(f'用户{a}识别成功')recognition_success = True  # 标记为已识别break  # 一旦识别成功,退出循环if not recognition_success:sg.popup('识别失败')cap.release()window.close()if __name__ == '__main__':data_get()


http://www.mrgr.cn/news/67192.html

相关文章:

  • 学习xxx公司连接sql server数据库的代码逻辑(C#)
  • MFC/Windows中UDP和TCP通信详解
  • 安装Element-Plus与v-model在vue3组件中的使用
  • 钉钉内集成第三方免密登录(Vue+.Net)
  • 达梦数据守护集群_动态增加实时备库
  • EL面包屑导航实现
  • 数学建模启发式算法篇(一)---遗传算法
  • Oracle OCP认证考试考点详解082系列14
  • LDO电路分析
  • 1.3 自然语言处理的应用
  • 【启程Golang之旅】深入理解 Protocol Buffers 及其应用
  • Spring 配置绑定原理分析
  • 复合查询【MySQL】
  • 蓝牙协议的前世今生
  • 复现LLM——带你从零认识自注意力
  • L6.【LeetCode笔记】合并两个有序链表
  • 【机器学习】k最近邻分类
  • Android中Activity启动的模式
  • python验证码滑块图像识别
  • 基于SSM的校园美食交流系统【附源码】
  • 法语vous voulez
  • LoRA:大型语言模型(LLMs)的低秩适应;低秩调整、矩阵的低秩与高秩
  • 算法——双指针
  • C++builder中的人工智能(7)如何在C++中开发特别的AI激活函数?
  • Redis的内存淘汰机制
  • MySQL 批量删除海量数据的几种方法