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

这篇具有很好参考价值的文章主要介绍了Python-敲木鱼升级版(真手动版敲木鱼)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

演示效果

Python-敲木鱼升级版(真手动版敲木鱼),Python,python,pygame,开发语言

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

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

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

源码(开启摄像头后按Q退出)文章来源地址https://www.toymoban.com/news/detail-744013.html

import time
import tkinter
from tkinter import messagebox
import threading
import pygame # pip install pygame
from PIL import Image, ImageTk # pip install pillow
 
class window(tkinter.Tk):
        def __init__(self):
                super().__init__()
 
                # 初始化功德
                self.gongde=0
 
                # 准备音频
                self.pygame=pygame
                self.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)
 
                # 功德+1
                self.gongde=self.gongde+1
                self.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 cv2
                import mediapipe as mp
 
                mp_hands = mp.solutions.hands
                hands = mp_hands.Hands()
                mp_drawing = mp.solutions.drawing_utils
 
                # coding:utf-8`
                cap = cv2.VideoCapture(0)  # 打开摄像头
                mark_one=0
                while True:
                        self.frame.destroy()
 
                        ret, frame = cap.read()  # 读取视频帧
                        if not ret:
                                break
                        image = 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=1
                                                if y > 400:
                                                        if 1 - mark_one == 0:
                                                                self.qiaomuyu()
                                                                mark_one=0
 
                                                cv2.circle(frame, (x, y), 5, (0, 255, 0), -1) # 画出关键点
 
                        cv2.imshow('Gesture Recognition', frame)  # 显示结果
                        if cv2.waitKey(1) & 0xFF == ord('q'):
                                break
 
                cap.release()
                cv2.destroyAllWindows()
 
if __name__ == '__main__':
        top=window()
        top.mainloop()

到了这里,关于Python-敲木鱼升级版(真手动版敲木鱼)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium升级版

    1.1原理 Selenium 是一个 Web 应用的自动化框架。 通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面。 比如点击界面按钮,在文本框 中输入文字 等操作。(相当于真正的浏览) 而且还能从web界面获取信息。 比如获取12306票务信息,招聘网站职位信息,财经网

    2024年01月16日
    浏览(35)
  • 爱心发射代码带名字升级版

    上次的爱心发射发出来之后,群友想问能不能把心爱的人名字放在爱心中间。 当然没问题啊,于是我就改了改代码,让女神王铁蛋显示在爱心中间,同时还可以在屏幕上飘动满屏的王铁蛋,大大小小、快快慢慢的王铁蛋。 这还拿不下王铁蛋? 话不多说,直接上效果图。 背景

    2024年02月11日
    浏览(36)
  • 单身狗问题(初级)兼(升级版)

    所属专栏:经典算法题❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!!!!

    2024年02月16日
    浏览(36)
  • 爬虫练习-12306自动购票升级版

    hello兄弟们,偷懒归来了。别问为啥这么久没更,问就是失踪了 最近一直在学习Django以及爬虫进阶之类的知识,加上快期末了,一直没有想起来自己还有一个账号没有更新,sorry啦 言归正传,今天抽空把前面的文章升级了一下。这里先把整理好的代码提前放给大家 代码放上,

    2024年02月06日
    浏览(50)
  • C语言猜数字升级版

    题目概述 猜数字是一种益智游戏,既可以两个人一起玩,也可以与电脑一起玩。现在我们需要将这个游戏移到电脑上,让电脑与我们一起玩猜数字游戏. 需求分析 用户输入:确定用户输入的数据是否正确 游戏过程:保证计算机能正确选定一个随机数字,并能够正常与用户互

    2024年02月04日
    浏览(41)
  • P1553 数字反转(升级版)(JAVA)

    以下为原题面,仅供参考: 给定一个数,请将该数各个位上数字反转得到一个新数。 这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小

    2024年02月13日
    浏览(29)
  • EasyExcel复杂表头导出(一对多)升级版

            在之前写的 EasyExcel复杂表头导出(一对多)的博客的结尾,受限于当时的能力和精力,留下一些问题及展望。现在写下此博客,目的就是解决之前遗留的问题。         背景介绍,见上述链接指向的博客,这里主要通过 自定义拦截器 的形式来完美解决。 对于图

    2024年02月06日
    浏览(47)
  • 云计算中网络基础知识(升级版)

    网络相连:电脑-交换机-电脑 需要配置两个地址:(1) IP地址、子网掩码、网关(网络的出口)。 (2) MAC 地址(物理地址)不需要配置,电脑网卡自带的(天生就有) 电脑必须要配置IP地址、子网掩码 才可以通信、网关可以不用(前提是两台电脑处在同一个网段下) 网关

    2023年04月27日
    浏览(33)
  • 【Unity+MySQL】实现注册登录系统(升级版)

    接着 上篇文章所谈到的系统缺陷,这篇文章进行升级解决。 问题 :注册界面与登录界面是同一个界面,导致用户输入用户密码进行注册后,即可点击登录。 解决 :在同一个场景中分别创建注册界面和登录界面,使用SetActive控制注册/登录成功后UI的显示与隐藏。 整体的UI框

    2024年02月09日
    浏览(36)
  • 洛谷-P1478-陶陶摘苹果(升级版)(贪心)

    又是一年秋季时,陶陶家的苹果树结了 n n n 个果子。陶陶又跑去摘苹果,这次他有一个 a a a 公分的椅子。当他手够不着时,他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的是:陶陶之前搬凳子,力气只剩下 s s s 了。当然,每次摘苹果时都要用一定的力气。陶陶

    2024年02月21日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包