pycharm中库安装+opencv手势识别

pycharm中库安装+opencv手势识别

  • python开发编译环境搭建
  • 百度API申请流程

python开发编译环境搭建

近期需要使用PYNQ开发板做一手势识别的项目,在此做一些学习笔记,供随时翻阅及他人参考。

  1. 安装pycharm

  2. python及opencv安装可参考:链接: link.

  3. 国内常用的源及cmd命令行下如何换源 :链接: link.

  4. pycharm中如何换源及库的安装

    进入设置的该路径下,点击“+”,其中Package下即为该python3.9环境下已经安装过的库及工具包
    pycharm中库安装+opencv手势识别_第1张图片

点击红色箭头所示按钮,进入下载源添加及删除界面:
pycharm中库安装+opencv手势识别_第2张图片
图中所示下载源均可自行添加,建议将常用的全部添加上,以保证需要的包均可搜索到
pycharm中库安装+opencv手势识别_第3张图片
添加好下载源后,即可在以下界面搜索需要的库及工具包,如果添Install失败,可尝试其余的源:
pycharm中库安装+opencv手势识别_第4张图片

若还是报类似以下的错误,可尝试以下解决办法
在这里插入图片描述
按照图中所示步骤,重新添加Sytem Interpreter,选择python路径为系统python安装路径下的.exe文件,本机安装的python版本为python3.9.7。采用该处理方法的原因是可能python解释器类型设置为了Virtualenv Environment,而不是Sytem Interpreter,亲测有效!
pycharm中库安装+opencv手势识别_第5张图片

百度API申请流程

可参考链接: link.
说明 使用该功能需要在百度智能云上实名注册,可领取免费调用资源,包括手势识别,驾驶行为分析,人体关键点识别等功能,但是调用量受限制,一般一种功能为5k或1w次,就是说调用其函数一次计数一次(while中会调用多次
支持的24类手势列表:拳头、OK、祈祷、作揖、作别、单手比心、点赞、Diss、我爱你、掌心向上、双手比心(3种)、数字(9种)、Rock、竖中指。
程序如下

import os
import cv2
from aip import AipBodyAnalysis
from aip import AipSpeech
from threading import Thread
import time
from playsound import playsound
import matplotlib.pyplot as plt
""" 你的 APPID AK SK """
APP_ID = '25799898'  
API_KEY = 'Iy5lTo13t1IctxTkXzS8c2Hl'
SECRET_KEY = '1rOq6rWioKnuqIorHKwdGI7aicG639Gq'
''' 调用'''

hand = {'One': '数字1', 'Five': '数字5', 'Fist': '拳头', 'Ok': 'OK',
        'Prayer': '祈祷', 'Congratulation': '作揖', 'Honour': '作别',
        'Heart_single': '比心心', 'Thumb_up': '点赞', 'Thumb_down': 'Diss',
        'ILY': '我爱你', 'Palm_up': '掌心向上', 'Heart_1': '双手比心1',
        'Heart_2': '双手比心2', 'Heart_3': '双手比心3', 'Two': '数字2',
        'Three': '数字3', 'Four': '数字4', 'Six': '数字6', 'Seven': '数字7',
        'Eight': '数字8', 'Nine': '数字9', 'Rock': 'Rock', 'Insult': '竖中指', 'Face': '脸'}
        
# 手势识别
gesture_client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)

capture = cv2.VideoCapture(0)  # 0为默认摄像头


def camera():
    while True:
        # 获得图片
        ret, frame = capture.read()
        # cv2.imshow(窗口名称, 窗口显示的图像)
        # 显示图片
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) == ord('q'):
            break


Thread(target=camera).start()  # 引入线程防止在识别的时候卡死


def gesture_recognition():
    # 第一个参数ret 为True 或者False,代表有没有读取到图片

    # 第二个参数frame表示截取到一帧的图片

    while True:
        try:
            ret, frame = capture.read()

            # 图片格式转换
            image = cv2.imencode('.jpg', frame)[1]
            gesture = gesture_client.gesture(image)  # AipBodyAnalysis内部函数
            words = gesture['result'][0]['classname']

            # voice(hand[words])
            print(hand[words])

        except:
            if cv2.waitKey(1) == ord('q'):
                break

gesture_recognition()

注意:需要在程序里修改APPID AK SK,设置为你从百度申请到的API的具体参数(记得申请免费调用资源,否则会出现调用失败的情况

你可能感兴趣的:(python_opencv,python,opencv)