python实现虚拟键盘

简单的实现了一下虚拟键盘,其中有些问题还没有解决,后续有时间继续搞!
其实就是在特定位置检测到特定的字母然后输出。


import cv2
from cvzone.HandTrackingModule import HandDetector
from time import sleep
import numpy as np
import cvzone
from pynput.keyboard import Controllercap = cv2.VideoCapture(0)
cap.set(3, 1280)
cap.set(4, 720)detector = HandDetector(detectionCon=0.8)
keys = [["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],["A", "S", "D", "F", "G", "H", "J", "K", "L", ";"],["Z", "X", "C", "V", "B", "N", "M", ",", ".", "/"]]
finalText = ""keyboard = Controller()def drawAll(img, buttonList):for button in buttonList:x, y = button.posw, h = button.sizecvzone.cornerRect(img, (button.pos[0], button.pos[1], button.size[0], button.size[1]),20, rt=0)cv2.rectangle(img, button.pos, (x + w, y + h), (255, 0, 255), cv2.FILLED)cv2.putText(img, button.text, (x + 20, y + 65),cv2.FONT_HERSHEY_PLAIN, 4, (255, 255, 255), 4)return img#
# def drawAll(img, buttonList):
#     imgNew = np.zeros_like(img, np.uint8)
#     for button in buttonList:
#         x, y = button.pos
#         cvzone.cornerRect(imgNew, (button.pos[0], button.pos[1], button.size[0], button.size[1]),
#                           20, rt=0)
#         cv2.rectangle(imgNew, button.pos, (x + button.size[0], y + button.size[1]),
#                       (255, 0, 255), cv2.FILLED)
#         cv2.putText(imgNew, button.text, (x + 40, y + 60),
#                     cv2.FONT_HERSHEY_PLAIN, 2, (255, 255, 255), 3)
#
#     out = img.copy()
#     alpha = 0.5
#     mask = imgNew.astype(bool)
#     print(mask.shape)
#     out[mask] = cv2.addWeighted(img, alpha, imgNew, 1 - alpha, 0)[mask]
#     return outclass Button():def __init__(self, pos, text, size=[85, 85]):self.pos = posself.size = sizeself.text = textbuttonList = []
for i in range(len(keys)):for j, key in enumerate(keys[i]):buttonList.append(Button([100 * j + 50, 100 * i + 50], key))while True:success, img = cap.read()img = detector.findHands(img)lmList, bboxInfo = detector.findPosition(img)img = drawAll(img, buttonList)if lmList:for button in buttonList:x, y = button.posw, h = button.sizeif x < lmList[8][0] < x + w and y < lmList[8][1] < y + h:cv2.rectangle(img, (x - 5, y - 5), (x + w + 5, y + h + 5), (175, 0, 175), cv2.FILLED)cv2.putText(img, button.text, (x + 20, y + 65),cv2.FONT_HERSHEY_PLAIN, 4, (255, 255, 255), 4)l, _, _ = detector.findDistance(8, 12, img, draw=False)print(l)## when clickedif l < 30:keyboard.press(button.text)cv2.rectangle(img, button.pos, (x + w, y + h), (0, 255, 0), cv2.FILLED)cv2.putText(img, button.text, (x + 20, y + 65),cv2.FONT_HERSHEY_PLAIN, 4, (255, 255, 255), 4)finalText += button.textsleep(0.15)cv2.rectangle(img, (50, 350), (700, 450), (175, 0, 175), cv2.FILLED)cv2.putText(img, finalText, (60, 430),cv2.FONT_HERSHEY_PLAIN, 5, (255, 255, 255), 5)cv2.imshow("Image", img)cv2.waitKey(1)

python实现虚拟键盘相关推荐

  1. Python获取鼠标位置,虚拟键盘操作

    Python获取鼠标位置,虚拟键盘操作 PS: 也是从网上各个帖子中学习的Python,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除 代码转载:https://blog.csdn ...

  2. Python调用驱动级按键--DD虚拟键盘

    开发DNF连点功能时,常规的PyMouse PyKeyboard无效 猜测原因是DNF屏蔽了模拟信号 尝试使用驱动级按键 作者:石头三颗 链接:https://www.zhihu.com/questi ...

  3. 如何使用 OpenCV 开发虚拟键盘

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 OpenCV 是最流行的计算机视觉任务库,它是用于机器学习. ...

  4. 通过OpenCV实现虚拟键盘

    通过OpenCV实现虚拟键盘 环境配置 在Anaconda中创建一个python=3.7的环境 可在pycharm内直接新建环境,也可以通过命令行的方式 conda create -n your_en ...

  5. Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build

    首先之前的工作都是为了想验证虚拟键盘的使用,才有了之前编译x11 .arm等qt的步骤. 在到这之前的构建环境,我说认真的,真的烦的要死,每次构建用的时间又多,配置完了编译会出一大堆error,加上公 ...

  6. USB转蓝牙hid键鼠按键精灵控制手机虚拟键盘、虚拟触摸等功能

    #USB转蓝牙hid键鼠按键精灵控制手机虚拟键盘.虚拟触摸等功能 提示:目的是为了实现通过电脑控制,达到手机虚拟触摸的功能 简单介绍 提示:开放协议,可再行开发,提供C# python c++ 等开发 ...

  7. PySide2使用屏幕虚拟键盘

    1.屏幕虚拟键盘 创建文件virtualkeyboard.py import sys, os from PySide2.QtWidgets import QApplication, QLineEdit ...

  8. iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘

    原文地址:http://blog.csdn.net/xiaotanyu13/article/details/7711954 iOS上面对键盘的处理很不人性化,所以这些功能都需要自己来实现, 首先是点击 ...

  9. 手机虚拟摄像头_没键盘也能打字?三星展示最新虚拟键盘Selfie Type:是真的

    1月8日消息,三星在近日举行的2020 CES国际消费电子展上展示了虚拟键盘Selfie Type,它是一款全新的概念产品,由三星内部的创意实验室C-Lab研发,能够通过手机的前置摄像头来智能识别用户 ...

  10. 一个虚拟键盘的简单思路

    在手机上做一个类似百度输入法之类的虚拟键盘. 像这样独立apk类似的,一般是用进程间通信来传递数据,可能会被程序监听到输入的内容. 如果自己做呢? 就是在界面上写数字键盘和拼音键盘的布局,可以当点击某 ...

最新文章

  1. 学完UI设计可以从事哪些工作
  2. 图像sobel梯度详细计算过程_OpenCV-Python 图像梯度 | 十八
  3. [YTU]_2499( 处理成绩(c++类训练))
  4. 阿里云OCR证件识别商业化发布,减少人工审核误差节省成本
  5. php 显示对像编码,PHP面向对象之旅:类型提示
  6. 华为云回应“关闭私有云”传闻 将进行业务调整形成混合云产品部
  7. Linux学习-逻辑滚动条管理员 (Logical Volume Manager)
  8. java对象 引用 原理,java对象引用和对象值得行为
  9. day_44_Django
  10. 很特别的动态规划教程
  11. c语言程序设计与算法,程序设计与算法(一)C语言程序设计
  12. 计算机组成原理问题集合
  13. (附源码)计算机毕业设计ssm大学生学科竞赛管理系统
  14. java内网_Java版开源的内网映射工具
  15. 木马 --- 基本概念和分类
  16. 你知道chrome小恐龙游戏吗?3分钟使用JavaScript实现
  17. zabbix3.2.7升级到zabbix3.4.1
  18. pycharm2019+破解补丁
  19. 阿卡迪亚大学计算机专业好考吗,申请阿卡迪亚大学究竟难不难?
  20. 微信windows版_微信多开教程:Win、Mac、iOS、Android

热门文章

  1. Python爬虫爬取中国电影票房排行榜
  2. 20170306 小兵的觉悟就是好好吃饭
  3. 好用的微信群管理软件
  4. TSQL 实现IRR功能
  5. 仿Tumblr点赞心破碎动画
  6. TiDB源码学习笔记:启动TiDB
  7. 斯坦福大学公开课:iOS8开发 第一课:课务,iOS8概述学习笔记
  8. 配置SecureCRT密匙登录
  9. javawebJAVAJSP酒店预订系统jsp酒店管理系统jsp民宿预订酒店jsp客房预订系统jsp宾馆客房预订系统
  10. 世界著名半导体公司及其官网