IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 不要光靠嘴巴说Love -> 正文阅读

[人工智能]不要光靠嘴巴说Love

前言

不知道大家有多久没有对那些身边一直陪伴支持你的人、照顾你的人说一句
“I LOVE YOU”。可能慢慢相处都会把对方对你的付出当作理所应当,忘了最开始时挂在嘴边的那些甜言蜜语。又或者正在追求幸福的朋友们,可能已经在网上学到了各种土味情话、撩妹套路,但是却忽视了行动。今天,我们就一起为那个他/她动手打出这句"I LOVE YOU"吧。

实现

实现思路

首先去GitHub上查看cvzone,这是一个基于opencv和Mediapipe制作的图像处理以及一些人工智能功能的cv库。

查看它的示例代码,其中含有识别手部行为以及手指距离等等功能,这和我们今天想做的正好合适

准备阶段

安装好opencv、cvzone、mediapipe等库,有可能用清华源下载会出错,这里我用的是豆瓣源进行安装,以mediapipe为例,安装代码为pip install mediapipe -i https://pypi.douban.com/simple/

安装好之后,分析github中给出的示例代码

在这里插入图片描述

在这里插入图片描述
从上面的代码可以看到,我们可以通过HandDetector得到手部动作,并且还能得到两根手指之间的距离。距离是一个非常重要的问题,涉及到后面识别点击动作的灵敏度

开始动手

import cv2
from cvzone.HandTrackingModule import HandDetector
from pynput.keyboard import Controller
import time

# 固定大小
cap=cv2.VideoCapture(0)
cap.set(3,1280)
cap.set(4,720)


# 实例化HandDetector
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",",",".","/"]
      ]

# 键盘控制实例化
keyboard=Controller()

# 绘制所有虚拟键盘的按键
def drawall(img,buttons):
    for button in buttons:
        x, y = button.pos
        w, h = button.size
        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

# 键盘对应到虚拟键盘的按钮
class Button():
    def __init__(self,pos,text,size=[85,85]):
        self.pos=pos
        self.size=size
        self.text=text


# 将键盘按键实例化添加到列表
button_list=[]
for i in range(len(keys)):
    for j,key in enumerate(keys[i]):
        button_list.append(Button([100*j+50,100*i+50],key))


Text=""

# 死循环
while True:
    # 案例代码
    sucess,img=cap.read()
    img=detector.findHands(img)
    lmlist,bboxInfo=detector.findPosition(img)

    img=drawall(img,button_list)

    # 案例代码
    if lmlist:
        for button in button_list:
            x,y=button.pos
            w,h=button.size

            # 当手指在某个按键上时,虚拟键盘变色,并且计算两个手指(食指中指)之间的距离
            if x<lmlist[8][0]<x+w and y<lmlist[8][1]<y+h:
                cv2.rectangle(img, button.pos, (x + w, y + h), (175,0,175), cv2.FILLED)
                cv2.putText(img, button.text, (x + 20, y + 65), cv2.FONT_HERSHEY_PLAIN, 4, (255, 255, 255), 4)
                # 8,12分别对应食指,中指
                l,_,_=detector.findDistance(8,12,img,draw=False)
                #print(l)


                # 设置手指之间距离的阈值激活点击行为
                if l<45:
                    # 键盘点击虚拟键盘中对应的按键
                    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)
                    Text+=button.text
                    time.sleep(0.2)
	# 将点击的内容显示到图像文字框上
    cv2.rectangle(img, (50,350), (700, 450), (175, 0,175), cv2.FILLED)
    cv2.putText(img, Text, (60,430), cv2.FONT_HERSHEY_PLAIN, 5, (255, 255, 255), 5)
    cv2.imshow("Image",img)
    cv2.waitKey(1)

结果

首先食指选择到按键,然后合拢食指中指作为点击行为
在这里插入图片描述

结束

第一次玩这个,需要慢慢掌握距离,简单的"I LOVE YOU"可能要打上十几分钟,手酸是很正常的。但是更多的时候我们需要思考对那些所值得的人是否存在一些亏欠?或者说太多只停留于嘴边,从来没去试着完成那些承诺。对所爱所值得的人,今后多用行为表达love吧。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:05:19  更:2021-08-29 09:06:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 17:51:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码