利用 百度AI接口 手势识别+time+opencv+threading+pyautogui等模块实现 手势控制电脑音乐播放

分享记录一个通过手势控制音乐播放的脚本.

实现思路:调用百度的人工智能接口,利用opencv+threading线程控制,读取摄像头每一帧进行识别,当识别出手势后再利用pyautogui转换成对应的模拟键盘操作,从而实现 手势控制音乐播放的效果。

实现前提:需要申请并创建百度AI应用

强调:如何使用和调用百度手势识别接口
1:进入百度AI开发平台:链接
2:在页面上选择进入控制台:
百度AI
3:登陆百度账号(没有百度账号的需要先注册)
在这里插入图片描述
4:登陆进来后点击人体分析(里面包含了 手势识别 接口)
利用 百度AI接口 手势识别+time+opencv+threading+pyautogui等模块实现 手势控制电脑音乐播放_第1张图片
5:再进来后 点击创建应用(应用名称随意,这里我已创建好)
利用 百度AI接口 手势识别+time+opencv+threading+pyautogui等模块实现 手势控制电脑音乐播放_第2张图片
6:获取创建的应用三个关键信息,后面代码需要用到
即AppID,APIkey,SecretKey
在这里插入图片描述
还有注意一点: 接口调用的次数 50000次/天 ,这些次数是免费调用
在这里插入图片描述

*补充知识点 *:(模拟键盘操作)

用到的依赖库是: pyautogui
其 主要用法函数是::pyautogui.hotkey(‘ctrl’, ‘alt’, ‘left’)
函数内容是:需要模拟的键盘按键的内容,支持多键,如上,逗号隔开。
具体的键盘操作请各自查询电脑的音乐软件的快捷键操作设置
-------------------------------

以下是源码部分:

from aip import AipBodyAnalysis#导入百度aip包
import pyautogui#模拟键盘按键依赖库
import cv2 as cv #读取显示摄像头
from threading import Thread #引入线程,防堵塞
from time import sleep #一个操作完成后进行停歇处理


#定义变量,百度AI的三个ID
AppID = '填入对应申请的应用信息'
APIKey = '填入对应申请的应用信息'
SecretKey = '填入对应申请的应用信息'
#调用百度接口,创建对象
client = AipBodyAnalysis(AppID,APIKey,SecretKey)

#读取摄像头
capture = cv.VideoCapture(0)
def camera():
    while True:
        ret,frame = capture.read()
        if ret:
            cv.imshow('frame',frame)
        if cv.waitKey(1) == 27:#返回键
            break
        
#引入多线程防止在识别的时候卡死
Thread(target=camera).start()
    
#调用函数读取图像
#image = get_file_content('2.png')

#创建识别结果的对应字典,方便后续调用
hand = {'One':'数字1','Two':'数字2','Five':'数字5','Fist':'拳头','Heart_single':'比心','Thumb_up':'点赞','Thumb_down':'Diss','Rock':'摇滚'}


#将摄像头截取的每一帧图片传入识别手势
def gesture_recognition():
    while True:
        try:
            ret,frame = capture.read()
            if ret:
                cv.imshow('frame', frame)
                #图片格式转换
                # '.jpg'表示把当前图片img按照jpg格式编码,按照不同格式编码的结果不一样
                image = cv.imencode('.jpg',frame)[1]
                #print(image)
                #调用接口的手势识别函数接口
                gesture = client.gesture(image)
                print(gesture)
                words = gesture['result'][0]['classname']
                result = hand[words]
                #voice(hand[words])#调用字典对应值读出来
                print("手势识别结果是:",result)
                """条件判断,将手势转换成对应键盘操作,从而控制音乐,具体的键盘操作请各自查询电脑的音乐软件的快捷键操作设置,以下是我的网易云音乐设置的快捷键操作"""
                #切换下一曲
                if result == '点赞':
                    pyautogui.hotkey('ctrl', 'alt', 'right')
                    print('已切换到下一首歌!')
                    sleep(10)
                #切换到上一曲
                elif result == 'Diss':
                    pyautogui.hotkey('ctrl', 'alt', 'left')
                    print('已切换到上一首歌!')
                    sleep(10)
                #暂停歌曲
                elif result == '数字5':
                    pyautogui.hotkey('ctrl', 'alt', 'p')
                    print('歌曲播放已暂停!')
                    sleep(10)
                #播放歌曲
                elif result == '拳头':
                    pyautogui.hotkey('ctrl', 'alt', 'p')
                    print('歌曲播放已开启!')
                    sleep(10)
                #开启或关闭歌词
                elif result == '比心':
                    pyautogui.hotkey('ctrl', 'alt', 'd')
                    print('已开启或关闭歌词显示!')
                    sleep(10)
        except:
            print('手势识别失败')
            sleep(10)
        if cv.waitKey(1) == 27:
            break

#启动函数
if __name__ == "__main__":
    gesture_recognition()
 

效果:
利用 百度AI接口 手势识别+time+opencv+threading+pyautogui等模块实现 手势控制电脑音乐播放_第3张图片


The End!!创作不易,欢迎点赞/评论!!欢迎关注个人公众号

你可能感兴趣的:(python实用,python,网络接口,thread)