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

Python-敲木鱼升级版(真手动版敲木鱼)

演示效果

需要安装的第三方库:
pip install pygame # 加载音乐
pip install pillow # 加载图片
pip install mediapipe # 判断手势的模型
pip install opencv # 模型要用来处理图形

建议有独显和摄像头的可以尝试!

想着升级一下玩法,只有真敲才能真积徳!于是找了个能判断手势的模型。

源码(开启摄像头后按Q退出)

import time
import tkinter
from tkinter import messagebox
import threading
import pygame # pip install pygame
from PIL import Image, ImageTk # pip install pillowclass window(tkinter.Tk):def __init__(self):super().__init__()# 初始化功德self.gongde=0# 准备音频self.pygame=pygameself.pygame.mixer.init()self.pygame.mixer.music.load('敲.mp3')# 准备图片self.qiaomuyutupian=ImageTk.PhotoImage(file='敲木鱼.jpg') # 转化为tkinter可以使用的图片self.qiaomuyutupian2=ImageTk.PhotoImage(file='敲木鱼2.jpg') # 转化为tkinter可以使用的图片# 启动界面self.base_top()def base_top(self):self.title('敲木鱼加功德')self.geometry('410x400')self.configure(bg='black')# 标签self.label1=tkinter.Label(self,text='积攒功德:'+str(self.gongde),font=('华文新魏',15),fg='white',bg='black',width=18)self.label1.place(x=100,y=70)# 按钮self.button1=tkinter.Button(self,image=self.qiaomuyutupian,relief='ridge',command=self.qiaomuyu)self.button1.place(x=100,y=100)# 按钮self.button2=tkinter.Button(self,text='互动',width=10,command=self.thread_hudong)self.button2.place(x=160,y=315)# 消息self.text1=tkinter.Text(self,width=10,height=5,bg='black',bd=0,foreground='white')self.text1.place(x=125,y=115)def showplus(self):# 文字浮动for i in range(4):self.text1.insert('insert',' \n')else:self.text1.insert('insert',' 功德 + 1')for i in range(5):time.sleep(0.04)self.text1.delete(1.0, 2.0)# 功德+1self.gongde=self.gongde+1self.label1.config(text='积攒功德:'+str(self.gongde))def changetupian(self):self.button1.config(image=self.qiaomuyutupian2)time.sleep(0.1)self.button1.config(image=self.qiaomuyutupian)def qiaomuyu(self):# 多线程启动解决延时,虽然延迟足够小,但为了更有效果th=threading.Thread(target=self.pygame.mixer.music.play)th.start()th2=threading.Thread(target=self.showplus)th2.start()th3=threading.Thread(target=self.changetupian)th3.start()def thread_hudong(self):th4=threading.Thread(target=self.hudong)th4.start()self.frame=tkinter.Frame(self,width=200,height=40,bg='white')self.frame.place(x=103,y=350)self.label2=tkinter.Label(self.frame,text='正在摄像头中,请稍等...',bg='white')self.label2.place(x=33,y=10)def hudong(self):import cv2import mediapipe as mpmp_hands = mp.solutions.handshands = mp_hands.Hands()mp_drawing = mp.solutions.drawing_utils# coding:utf-8`cap = cv2.VideoCapture(0)  # 打开摄像头mark_one=0while True:self.frame.destroy()ret, frame = cap.read()  # 读取视频帧if not ret:breakimage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)  # 转换颜色空间results = hands.process(image)  # 手势识别# 处理识别结果if results.multi_hand_landmarks:for hand_landmarks in results.multi_hand_landmarks:mp_drawing.draw_landmarks(frame,hand_landmarks,mp_hands.HAND_CONNECTIONS) # 用于指定地标如何在图中连接。for point in hand_landmarks.landmark:x = int(point.x * frame.shape[1])y = int(point.y * frame.shape[0])if y < 200:mark_one=1if y > 400:if 1 - mark_one == 0:self.qiaomuyu()mark_one=0cv2.circle(frame, (x, y), 5, (0, 255, 0), -1) # 画出关键点cv2.imshow('Gesture Recognition', frame)  # 显示结果if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()if __name__ == '__main__':top=window()top.mainloop()

相关文章:

Python-敲木鱼升级版(真手动版敲木鱼)

演示效果 需要安装的第三方库&#xff1a; pip install pygame # 加载音乐 pip install pillow # 加载图片 pip install mediapipe # 判断手势的模型 pip install opencv # 模型要用来处理图形 建议有独显和摄像头的可以尝试&#xff01; 想着升级一下玩法&#xff0c;只有真敲…...

Websocket @ServerEndpoint不能注入@Autowired

在websocket中使用ServerEndpoint无法注入Autowired、Value 问题分析 Spring管理采用单例模式&#xff08;singleton&#xff09;&#xff0c;而 WebSocket 是多对象的&#xff0c;即每个客户端对应后台的一个 WebSocket 对象&#xff0c;也可以理解成 new 了一个 WebSocket&…...

Unity热更新

1&#xff0c;热更新的概念与作用 app更新通常分为两类&#xff0c;一种是整包更新&#xff08;换包&#xff09;&#xff0c;一种是热更新&#xff08;不换包&#xff0c;通过网络下载&#xff0c;动态更新资源等&#xff09;。 整包更新&#xff0c;是指在需要更新时&#x…...

如何用维格云搭建和一键训练你的钧瓷AI机器人?

大禹智库 第69期(总第400期) 2023年11月4日 如何用维格云搭建和一键训练你的钧瓷AI机器人? 钧瓷私有数据聊天机器人是一种能够根据预设的数据集进行智能对话的机器人。通过维格云,我们可以轻松地搭建自己的钧瓷私有数据聊天机器人。本文将以钧道机器人为例,详细介绍如何…...

整理的一些Java细节问题

1. 为什么要有无参构造&#xff1f; 在 Java 中&#xff0c;如果一个类没有显式定义构造方法&#xff0c;编译器会自动生成一个默认的无参构造方法&#xff08;也称为默认构造方法&#xff09;。无参构造方法是一个没有任何参数的构造方法。 无参构造方法的存在有几个重要原因…...

初识AUTOSAR网络管理

文章目录 目的模式时间参数T_REPEAT_MESSAGET_NM_TIMEOUTT_WAIT_BUS_SLEEPT_START_Tx_AppFrameT_NM_ImmediateCycleTimeT_NM_MessageCycleN_ImmediateNM_TIMEST_START_NM_TXT_WakeUp跳转状态NM_1NM_2NM_3NM_4NM_5NM_6NM_7...

Flink SQL Hive Connector使用场景

目录 1.介绍 2.使用 2.1注册HiveCatalog 2.2Hive Read 2.2.1流读关键配置 2.2.2示例...

【Docker】联合探讨Docker:容器化技术的革命性应用

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…...

dirhunt使用手册,中文版

“dirhunt” 的命令行工具的帮助信息&#xff0c;用于目录扫描和网站内容分析。以下是这个命令的使用方法和示例&#xff1a; 命令格式&#xff1a; dirhunt [OPTIONS] [URLS]… [URLS]…&#xff1a;一个或多个域名或 URL&#xff0c;可以加载来自文件的 URL&#xff0c;使用…...

【从0到1设计一个网关】如何设计一个稳定的网关?

文章目录 高可用分析软件架构心跳检测自动恢复熔断降级接口重试隔离压测和预案多机房灾备以及双活数据中心异常处理机制重试主备服务自动切换动态剔除或恢复异常机器超时时间的考虑服务设计这篇文章并没有具体的业务实现,而只是对于如何设计一个高可用,稳定的网关列举出了一些…...

chromedp库编写程序

步骤1&#xff1a;首先&#xff0c;我们需要导入chromedp库&#xff0c;以便使用它来下载网页内容。 import chromedp 步骤2&#xff1a;然后&#xff0c;我们需要创建一个函数&#xff0c;该函数接受一个URL作为参数&#xff0c;并使用chromedp库下载该URL的内容。 func do…...

pngquant failed to build, make sure that libpng-dev is installed 问题

第一个参考方案失败 &#xff1a;npm install -g windows-build-tools4.0.0 安装失败&#xff0c;提示 依赖不在支持 第二个方案&#xff0c;降低node 版本 失败 第三种方案&#xff0c;成功 先执行&#xff0c;下面两行代码&#xff0c;再按照依赖 npm install imagemin-pn…...

进程控制(二):进程等待

文章目录 进程控制&#xff08;二&#xff09;进程等待wait函数waitpid函数wait/waitpid获取子进程状态码的过程进程等待相关的宏 总结 进程控制&#xff08;二&#xff09; 延续对于上文进程结束&#xff0c;我们继续对于进程控制进行学习&#xff0c;本文我们主要是对于进程…...

SWAT-MODFLOW地表水与地下水耦合模型的建模及应用

目录 第一讲 模型原理与层次结构 第二讲 QGIS软件 第三讲 基于QSWATMOD的SWAT-MODFLOW模拟 第四讲 QSWAT模型介绍与建模 第五讲 基于QGIS的数据制备 第六讲 基于CUP的SWAT参数率定 第七讲 MODFLOW模型讲解 第八讲 结果分析 更多应用 耦合模型被应用到很多科学和工程领…...

使用navicat操纵数据库

<1>连接数据库 打开Navicat&#xff0c;点击“连接”&#xff0c;选择“MySQL”&#xff0c;这边是本机安装的mysql,主机为localhost&#xff0c;输入root密码。 使用Navicat创建数据库并导入SQL文件 SQL查询 普通SQL查询 USE demo; SELECT * FROM t_emp;SELECT emp…...

websocket入门

一&#xff0c;什么是websocket WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议。 WebSocket有…...

Word里MathType插件符号表消失了

场景再现 在word里面编辑数学公式&#xff0c;结果符号表跑到屏幕外面了&#xff0c;找不到&#xff1b; 解决办法 在其中找到视图->工具栏&#xff0c;点击即可&#xff1a; 还嫌弃它跑到外边了&#xff0c;那就可以点击符号表的边框&#xff1a; 双击左边边框&#x…...

利用MySQL玩转数据分析之基础篇

知识无底&#xff0c;学海无涯&#xff0c;到今天进入MySQL的学习4天了&#xff0c;知识点虽然简单&#xff0c;但是比较多&#xff0c;所以写一篇博客将MySQL的基础写出来&#xff0c;方便自己以后查找&#xff0c;还有就是分享给大家。 1、SQL简述 1&#xff09;SQL的概述 S…...

【ML】分类问题

分类问题 classification&#xff1a;根据已知样本特征&#xff0c;判断输入样本属于哪种已知样本类。 常用入门案例&#xff1a;垃圾邮件检测、图像分类、手写数字识别、考试通过预测。 分类问题和回归问题的明显区别&#xff1a; 分类问题的结果是非连续型标签&#xff0c…...

python @classmethod装饰器作用 与 使用 类方法 实例方法

1 表示是类方法, 类方法可以修改类变量, 实例方法不能修改类变量 类方法可以访问和修改类变量&#xff08;也称为类属性&#xff09;。这是实例方法做不到的&#xff0c;因为实例方法只能访问和修改实例变量&#xff08;也称为实例属性&#xff09; 1.1 例子 class MyClass:…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...