吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4633|回复: 78
收起左侧

[Python 原创] 敲木鱼levelUP(真手动版敲木鱼)

  [复制链接]
xhtdtk 发表于 2023-11-3 22:47
本帖最后由 xhtdtk 于 2023-11-3 23:01 编辑

演示效果


图片:
微信截图_20231103224404.png

视频地址:
https://www.bilibili.com/video/BV1qj411a7Nk/?vd_source=bdbfa2c9c81f801c03a186f99808e2ab

源码及其他文件:https://www.123pan.com/s/loCcVv-vTNSv.html

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

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

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

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

[Python] 纯文本查看 复制代码
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()


免费评分

参与人数 16吾爱币 +21 热心值 +13 收起 理由
Clousa95 + 1 + 1 谢谢@Thanks!
linshushu + 1 + 1 谢谢@Thanks!
wuaiwl01 + 1 用心讨论,共获提升!
dongliang123 + 1 + 1 谢谢@Thanks!
zbm_li + 1 + 1 我很赞同!
ifdess + 1 + 1 热心回复!
爱上玲姐不会变 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
viklion + 1 + 1 谢谢@Thanks!
lccccccc + 1 + 1 我很赞同!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
是随风啊 + 1 热心回复!
lxhyjr + 1 + 1 谢谢@Thanks!
lgc81034 + 1 谢谢@Thanks!
xylqr + 1 + 1 谢谢@Thanks!
为之奈何? + 1 + 1 我很赞同!
shengruqing + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

逃亡的蛋挞 发表于 2023-11-3 22:53
好家伙,这个软件有意思。阿弥陀佛。
killerzeno 发表于 2023-11-9 11:34
楼主问下,打包exe用啥呢?我打包出来的点击互动后没反应,但在PyCharm里可以互动调用摄像头。我试了Auto-py-to-exe,installer等,求解~~~各位达人朋友求解,谢谢了
ldeal10 发表于 2023-11-3 23:01
封神之剑 发表于 2023-11-3 23:29
要买一个真木鱼?
xiaopeng128 发表于 2023-11-4 00:00
有点意思,哈哈哈
kejojvo24 发表于 2023-11-4 00:01
有点东西哦
eric66 发表于 2023-11-4 00:09
有点意思
wangdeshui 发表于 2023-11-4 00:20
都被你们玩出花了~
cfl300 发表于 2023-11-4 00:20
老哥,你真TM太有材了。
CrazyRookie 发表于 2023-11-4 00:27
赛博木鱼是吧666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 07:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表