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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> openCV手势识别之隔空移物 -> 正文阅读

[人工智能]openCV手势识别之隔空移物

如何用openCV隔空移苹果

WHY

前一阵子开始接触手势识别,觉得现在的库是真强大,13行代码就调出了手势识别,那手势识别出来后,可以做什么呢?今天,我又跟着印度小哥玩了一把隔空移物。

WHAT

什么事隔空移物呢?就是利用手指间的距离,控制图片的位置。当食指和中指并拢且在图片里面时,就更新图片的坐标(跟着食指走),所以看起来就好像被手指拖着移动了。道理很简单,我从网上找了一个透明底的苹果图片,作为素材。

HOW

要点

我用的苹果电脑,所以在读取图片路径的时候费了老大劲儿。目前只有绝对路径可以读取到,其他写法全部失败。
然后为了跟视频尺寸匹配,用了openCV的resize方法改写了图片的原始大小。

代码

from math import fabs
import cv2
import cvzone
from cvzone.HandTrackingModule import HandDetector

# read a picture which is an apple
path = '/Users/sean/Downloads/piclib/apple1.png'
imgApple = cv2.imread(path, cv2.IMREAD_UNCHANGED)

# resize the picture into proper size
widthApple, heightApple = 200, 196
apple = cv2.resize(imgApple, (widthApple, heightApple), interpolation=cv2.INTER_AREA)

# load video from camera
<参见上篇文章>

# set picture initial position
ox, oy = 50, 30

while True:
    success, img = cap.read()
    img = cv2.flip(img, 1) # flip the right and left hand
    hands, img = detector.findHands(img, flipType=False) # find hands in video

    if hands:
        lmList = hands[0]['lmList']
        # get the distance between index finger and middle finder
        length, info, img = detector.findDistance(lmList[8], lmList[12], img)
        if length < 40:
            # if the distance is lower than 40, update the picture position
            cursor = lmList[8]
            if ox < cursor[0] < ox + widthApple and oy < cursor[1] < oy + heightApple:
                ox, oy = cursor[0] - widthApple // 2, cursor[1] - heightApple // 2

    # load apple picture in the video
    img = cvzone.overlayPNG(img, apple, [ox, oy])

    cv2.imshow('Hands', img)
    cv2.waitKey(1)

下一步

尝试加载一个框和多个苹果,类似于摘苹果。需要用到面向对象的概念。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:15:13  更:2021-12-06 15:18:49 
 
开发: 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 2:41:20-

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