AI虚拟点读机--详细注释解析恩培作品7

感谢恩培大佬对项目进行了完整的实现,并将代码进行开源,供大家交流学习。

一、项目简介

本项目最终达到的效果为手势控制虚拟点读机。如下所示

 

项目用python实现,调用opencv等库,使用SVM对字体进行分类,由以下步骤组成:

1、使用OpenCV读取摄像头视频流;

2、mediapipe手势识别定位手部位置;

3、使用Paddle detection进行物体检测。

4、使用paddleocr进行文字检测。

二、安装流程

硬件:

Windows11、GPU:nvdia GTX 1060 、普通RBG相机

软件:

  • conda
  • Python 3.7
  • CUDA 10.2
  • cuDNN7.6.5
  • mediapipe 0.8.9
  • Paddlepaddle 2.2

使用步骤:

  1. 满足硬件条件(需要GPU)和软件条件
  2. 安装PaddleDetection:根据官网安装
  3. 安装PaddleOCR:根据官网安装
  4. 下载PaddleDetection 识别模型,并deploy后(查看官网教程:Python端预测部署),将生成的infer_cfg.yml, model.pdiparams, model.pdiparams.info, model.pdmodel文件放到baidu_pp_detection/models下,类似这样:

 

推荐下载cascade_rcnn_dcn_r101_vd_fpn_gen_server_side模型,它支持676个类别识别(详情查看这里),且经过我的测试,速度较好。

  1. 下载OCR推理模型,解压后分别放到baidu_pp_ocr/models/文件夹下,类似这样:

 

文本检测模型推荐下载ch_PP-OCRv2_det_infer,文本识别模型推荐下载ch_PP-OCRv2_rec_infer

  1. 运行python demo.py即可实时离线识别和OCR。

三、代码详解

# 更多问题,欢迎私信交流。

# 导入OpenCV

import cv2

# 导入mediapipe

import mediapipe as mp

# 导入PIL

from PIL import Image, ImageDraw, ImageFont

# 导入其他依赖包

import time

import math

import numpy as np

from baidu_pp_wrap import Baidu_PP_Detection,Baidu_PP_OCR

# 画图类

class DrawSomeInfo:

def __init__(self):

# 模式,double: 双手,right,single:右手

self.hand_mode = 'None'

self.hand_num = 0

# 记录左右手的相关信息

# 坐标

self.last_finger_cord_x = {'Left': 0, 'Right': 0}

self.last_finger_cord_y = {'Left': 0, 'Right': 0}

# 圆环度数

self.last_finger_arc_degree = {'Left': 0, 'Right': 0}

# 右手模式

self.right_hand_circle_list = []

# 初始化停留时间

now = time.time()

self.stop_time = {'Left': now, 'Right': now}

# 圆环配色

self.handedness_color = {'Left': (255, 0, 0), 'Right': (255, 0, 255)}

# 手指浮动允许范围,需要自己根据相机校准

self.float_distance = 10

# 触发时间

self.activate_duration = 0.3

# 单手触发识别时间

self.sin
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
├─1.计算机视觉简介、环境准备(python, ipython) │ computer vsion.pdf │ CS231 introduction.pdf │ ├─2.图像分类问题简介、kNN分类器、线性分类器、模型选择 │ 2. 图像分类简介、kNN与线性分类器、模型选择.mp4 │ 2.初识图像分类.pdf │ ├─3.再谈线性分类器 │ 3.再谈线性分类器.mp4 │ 再谈线性分类器.pdf │ ├─4.反向传播算法和神经网络简介 │ .反向传播算法和神经网络简介.pdf │ 4. 反向传播算法和神经网络简介.mp4 │ ├─5.神经网络训练1 │ 5.-神经网络训练1.pdf │ 5.神经网络训练1.mp4 │ ├─6.神经网络训练2、卷积神经网络简介 │ 6.神经网络训练2.mp4 │ 神经网络训练2.pdf │ ├─7.卷积神经网络 │ 7.卷积神经网络.mp4 │ Lession7.pdf │ ├─8.图像OCR技术的回顾、进展及应用前景 │ 8.图像OCR技术的回顾、进展及应用前景.mp4 │ PhotoOCR_xbai.pdf │ └─9.物体定位检测 物体定位检测.pdf │ ├─10.卷积神经网络可视化 │ .卷积神经网络可视化.pdf │ 10.卷积神经网络可视化.mp4 │ ├─11.循环神经网络及其应用 │ 11.循环神经网络及其应用.mp4 │ 循环神经网络.pdf │ ├─12.卷积神经网络实战 │ 12.卷积神经网络训练实战.mp4 │ 卷积神经网络实战.pdf │ ├─13.常见深度学习框架介绍 │ 常见深度学习框架介绍.pdf │ ├─14.图像切割 │ 14.图像切割.mp4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值