当前位置: 首页 > news >正文

基于Opencv的虚拟拖拽项目

预备知识

勾股定理
在这里插入图片描述跟随移动算法
在这里插入图片描述手势识别图解
在这里插入图片描述

项目源代码

"""
演示一个简单的虚拟拖拽
步骤:
1、opencv 读取视频流
2、在视频图像上画一个方块
3、通过mediapipe库获取手指关节坐标
4、判断手指是否在方块上
5、是,方块跟着移动
6、完善:通过食指和中指指尖距离确定是否激活移动
7、完善:画面显示FPS等信息
"""
import cv2
import math#导入mediapipe的相关模块
# 导入mediapipe:https://google.github.io/mediapipe/solutions/hands
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_hands = mp.solutions.handshands = mp_hands.Hands(model_complexity=0,min_detection_confidence=0.5,min_tracking_confidence=0.5)#读取视频流
cap = cv2.VideoCapture(0) #调用摄像头#获取画面的长度和宽度
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
print(f"width = {width}\n")
print(f"height = {height}")
#方块初始化数组
x = 100
y = 100
w = 200
h = 200on_square = False
square_color = (0,255,0)while True:ret,frame = cap.read()#读取视频帧if ret:#镜像frame = cv2.flip(frame,1)frame.flags.writeable = Falseframe = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)#识别results = hands.process(frame)frame.flags.writeable = Trueframe = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)#如果有结果的话if results.multi_hand_landmarks:#遍历双手for hand_landmarks in results.multi_hand_landmarks:mp_drawing.draw_landmarks(frame,hand_landmarks,mp_hands.HAND_CONNECTIONS,mp_drawing_styles.get_default_hand_landmarks_style(),mp_drawing_styles.get_default_hand_connections_style())# 使用这两句看一下里面到底是什么?# print(type(hand_landmarks))# print(hand_landmarks)# exit()#21个关键点的x、y坐标列表x_list = []y_list = []for landmarks in hand_landmarks.landmark:x_list.append(landmarks.x)y_list.append(landmarks.y)#输出一下长度# print(len(x_list))# 获取食指指尖坐标,坐标位置查看:https://google.github.io/mediapipe/solutions/handsindex_finger_x = int(x_list[8] * width)index_finger_y = int(y_list[8] * height)# 获取中指坐标middle_finger_x = int(x_list[12] * width)middle_finger_y = int(y_list[12] * height)# 计算两指距离# finger_distance =math.sqrt( (middle_finger_x - index_finger_x)**2 + (middle_finger_y-index_finger_y)**2)finger_distance = math.hypot((middle_finger_x - index_finger_x),(middle_finger_y - index_finger_y))# 看一下距离# print(finger_distance)#把食指画出来cv2.circle(frame,(index_finger_x,index_finger_y),20,(0,0,255),-1)#判断食指指尖在不在方块上if finger_distance < 60:# X坐标范围 Y坐标范围if (index_finger_x > x and index_finger_x < (x+w)) and (index_finger_y > y and index_finger_y < (y+h)):if on_square == False:print('在')L1 = index_finger_x - xL2 = index_finger_y - ysquare_color = (255,0,255)on_square = Trueelse:print("不在")else:#解除on_square = Falsesquare_color = (0,255,0)#更新坐标if on_square:x = index_finger_x - L1y = index_finger_y - L2#在视频中画一个方块# cv2.rectangle(frame,(x,y),(x+w,y+h),square_color,-1)#半透明处理overlay = frame.copy()cv2.rectangle(frame, (x, y), (x + w, y + h), square_color, -1)frame = cv2.addWeighted(overlay, 0.5, frame, 1 - 0.5, 0)#展示画面cv2.imshow("demo",frame)#退出条件if cv2.waitKey(10) & 0xFF == ord('q'):break

项目效果

在这里插入图片描述

相关文章:

基于Opencv的虚拟拖拽项目

预备知识 勾股定理 跟随移动算法 手势识别图解 项目源代码 """ 演示一个简单的虚拟拖拽 步骤&#xff1a; 1、opencv 读取视频流 2、在视频图像上画一个方块 3、通过mediapipe库获取手指关节坐标 4、判断手指是否在方块上 5、是&#xff0c;方块跟着移动 6、…...

基于单片机DHT11温湿度NRF2401无线通信控制系统

一、系统方案 本设计采用STC89C5单片机作为主控制器&#xff0c;从机采用DHT11传感器采集温湿度、按键设置报警阀值&#xff0c;液晶1602显示&#xff0c;蜂鸣器报警&#xff0c;无线NRF2401模块。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统…...

AutoSAR配置与实践(基础篇)2.5 RTE对数据一致性的管理

传送门 点击返回 ->AUTOSAR配置与实践总目录 AutoSAR配置与实践&#xff08;基础篇&#xff09;2.5 RTE对数据一致性的管理 一、 数据一致性问题引入二、 数据一致性的管理2.1 RTE管理 (SWC间)2.2 中断保护 (SWC内)2.3 变量保护IRVS (SWC内)2.4 Task分配2.5 任务抢占控制 一…...

ASP.NET WEB API通过SugarSql连接MySQL数据库

注意&#xff1a;VS2022企业版可以&#xff0c;社区版可能存在问题。实体名称和字段和数据库中的要一致。 1、创建项目&#xff0c;安装SqlSugarCore、Pomelo.EntityFrameworkCore.MySql插件 2、文件结构 2、appsettings.json { “Logging”: { “LogLevel”: { “Default”: …...

08-微信小程序视图层

08-微信小程序视图层 文章目录 视图层 ViewWXML数据绑定列表渲染条件渲染模板引用importimport 的作用域include WXSS尺寸单位样式导入内联样式选择器全局样式与局部样式 WXS注意事项页面渲染数据处理 视图层 View 框架的视图层由 WXML 与 WXSS 编写&#xff0c;由组件来进行…...

[机器学习]特征工程:特征降维

特征降维 1、简介 特征降维是指通过减少特征空间中的维度&#xff0c;将高维数据映射到一个低维子空间的过程。 在机器学习和数据分析中&#xff0c;特征降维可以帮助减少数据的复杂性、降低计算成本、提高模型性能和可解释性&#xff0c;以及解决维度灾难等问题。特征降维通…...

12. Docker可视化工具

目录 1、前言 2、Docker UI 2.1、部署Docker UI 2.2、管理容器 3、Portainer 3.1、部署Portainer 3.2、管理容器 3.3、添加远程Docker 4、Shipyard 1、前言 Docker 提供了命令行工具来管理 Docker 的镜像和运行 Docker 的容器。我们也可以使用图形工具来管理 Docker。…...

css层叠关系

文章目录 cascading声明冲突应用重置样式表a元素的类选择器顺序问题 cascading cascading – 层叠 解决声明冲突的过程&#xff0c;浏览器会自动处理&#xff1b;就是计算样式的权重&#xff0c;权重大的就被选择&#xff1b; 声明冲突 是指多个选择器选中同一个标签&#x…...

【Unity实战篇 】| 如何在小游戏中快速接入一个新手引导教程

前言 【Unity实战篇 】 | 如何在小游戏中快速接入一个新手引导教程一、简单教程描述二、接入Tutorial Master 实现游戏引导2.1 导入Tutorial Master2插件2.2 添加TutorialMasterManager脚本对象2.3 配置Tutorial&#xff0c;用于管理第一段引导内容2.4 配置Stage&#xff0c;用…...

Lookup Singularity

1. 引言 Lookup Singularity概念 由Barry WhiteHat在2022年11月在zkResearch论坛 Lookup Singularity中首次提出&#xff1a; 其主要目的是&#xff1a;让SNARK前端生成仅需做lookup的电路。Barry预测这样有很多好处&#xff0c;特别是对于可审计性 以及 形式化验证&#xff…...

idea 本地版本控制 local history

idea 本地版本控制 local history 如何打开 1 自定义快捷键 settings->keymap->搜索框输入 show history -》Add Keyboard Shortcut -》设置为 CtrlAltL 2 右键文件-》local history -》show history 新建文件 版本1&#xff0c;creating class com.geekmice…这个是初…...

【Freertos基础入门】深入浅出freertos互斥量

文章目录 前言一、互斥量是什么&#xff1f;二、互斥量的使用场景三、互斥量的使用1.创建 2.删除互斥量3.give和take四、示例代码总结 前言 FreeRTOS是一款开源的实时操作系统&#xff0c;提供了许多基本的内核对象&#xff0c;其中包括互斥锁&#xff08;Mutex&#xff09;。…...

皮爷咖啡基于亚马逊云科技的数据架构,加速数据治理进程

皮爷咖啡&#xff08;Peet’s Coffee&#xff09;是美国精品咖啡品牌&#xff0c;于2017年进入中国&#xff0c;为中国消费者带来传统经典咖啡饮品&#xff0c;并特别呈现更加丰富的品质咖啡饮品体验。通过深入应用亚马逊云科技云原生数据库产品Amazon Redshift以及Amazon DMS等…...

C++ string类详解

⭐️ string string 是表示字符串的字符串类&#xff0c;该类的接口与常规容器的接口基本一致&#xff0c;还有一些额外的操作 string 的常规操作&#xff0c;在使用 string 类时&#xff0c;需要使用 #include <string> 以及 using namespace std;。 ✨ 帮助文档&…...

深入浅出Pytorch函数——torch.nn.init.ones_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

一、docker及mysql基本语法

文章目录 一、docker相关命令二、mysql相关命令 一、docker相关命令 &#xff08;1&#xff09;拉取镜像&#xff1a;docker pull <镜像ID/image> &#xff08;2&#xff09;查看当前docker中的镜像&#xff1a;docker images &#xff08;3&#xff09;删除镜像&#x…...

【计算机网络】13、ARP 包:广播自己的 mac 地址和 ip

机器启动时&#xff0c;会向外广播自己的 mac 地址和 ip 地址&#xff0c;这个即称为 arp 协议。范围是未经过路由器的部分&#xff0c;如下图的蓝色部分&#xff0c;范围内的设备都会在本地记录 mac 和 ip 的绑定信息&#xff0c;若有重复则覆盖更新&#xff08;例如先收到 ma…...

通过微软Azure调用GPT的接口API-兼容平替OpenAI官方的注意事项

众所周知&#xff0c;我们是访问不通OpenAI官方服务的&#xff0c;但是我们可以自己通过代理或者使用第三方代理访问接口 现在新出台的规定禁止使用境外的AI大模型接口对境内客户使用&#xff0c;所以我们需要使用国内的大模型接口 国内的效果真的很差&#xff0c;现在如果想使…...

回归预测 | MATLAB实现BO-SVM贝叶斯优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现BO-SVM贝叶斯优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现BO-SVM贝叶斯优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程序设计…...

GAN!生成对抗网络GAN全维度介绍与实战

目录 一、引言1.1 生成对抗网络简介1.2 应用领域概览1.3 GAN的重要性 二、理论基础2.1 生成对抗网络的工作原理2.1.1 生成器生成过程 2.1.2 判别器判别过程 2.1.3 训练过程训练代码示例 2.1.4 平衡与收敛 2.2 数学背景2.2.1 损失函数生成器损失判别器损失 2.2.2 优化方法优化代…...

绝地求生罗技鼠标宏终极教程:5分钟实现完美压枪

绝地求生罗技鼠标宏终极教程&#xff1a;5分钟实现完美压枪 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的后坐…...

研扬EPIC-RPS9工控主板解析:4英寸板载13代酷睿,赋能边缘AI与机器视觉

1. 项目概述&#xff1a;当“小钢炮”遇上工业严苛环境在工业自动化、边缘计算和嵌入式视觉这些领域里&#xff0c;我们常常面临一个经典矛盾&#xff1a;既要强大的算力来处理海量数据、运行复杂算法&#xff0c;又要设备足够紧凑、坚固&#xff0c;能塞进各种空间受限、环境恶…...

NotebookLM心理学研究辅助:为什么92%的心理学博士生漏用了“语义锚定”功能?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM心理学研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度语义理解的 AI 助手&#xff0c;其“以你的资料为中心”的设计范式特别契合心理学研究中对原始文献、访谈转录稿、实验…...

基于TRRS Trinkey的辅助技术设备开发:从接口转换到可编程交互

1. 项目概述&#xff1a;当辅助技术遇上可编程硬件如果你接触过辅助技术&#xff08;Assistive Technology, AT&#xff09;&#xff0c;或者身边有朋友需要借助特殊设备与数字世界交互&#xff0c;你可能会发现&#xff0c;市面上很多现成的开关、控制器要么功能单一&#xff…...

Agent = Model + Harness

Agent Model Harness从通用视角拆解 Agent 的完整工程链路。本文不做框架对比&#xff0c;只回答一个问题&#xff1a;Agent 真正的工程在哪里&#xff1f; 读完应当能在自己的 Agent 实现里识别出对应的层次&#xff0c;并判断哪一段最值得优化。图 0 全链路总览&#xff1…...

Coze(扣子)工作流使用攻略 操作指南(2026最新版)

Coze工作流&#xff08;Workflow&#xff09;是实现复杂AI任务的核心工具&#xff0c;它通过可视化拖拽节点的方式&#xff0c;将大模型、插件、代码、数据库等组件组合成自动化流程。适合处理多步骤、结构化任务&#xff08;如内容生成、数据分析、图像处理、客服流程等&#…...

EFM8 I2C Slave外设深度解析:从SMBus思维转换到实战应用

1. 项目概述&#xff1a;从SMBus到I2C Slave的思维转换如果你之前主要接触的是SMBus&#xff08;系统管理总线&#xff09;设备&#xff0c;现在要上手Silicon Labs的EFM8LB1或EFM8BB3这类8位MCU的I2C Slave&#xff08;从机&#xff09;功能&#xff0c;可能会觉得有点“水土不…...

别再熬大夜改论文了!okbiye AI 写作,把毕业论文从选题到终稿焊在及格线以上

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 打开电脑&#xff0c;对着空白的 Word 文档发呆&#xff0c;开题报告和初稿大纲改了又改&#xff0c;导师的红批注比正文还长&#xff0c;格…...

基于AI宏观流动性监测框架的黄金三日连跌研究:美联储加息预期按兵不动后的市场重定价逻辑

摘要&#xff1a;本文通过AI宏观利率模型、美元流动性监测系统与黄金波动率因子分析&#xff0c;结合美通胀数据、美债收益率变化及市场利率预期重定价过程&#xff0c;分析黄金连续三日回落背后的核心驱动逻辑&#xff0c;并探讨当前“高利率持续”环境下黄金资产的阶段性压力…...

弃ReID跨镜,选镜像无感定位——打破跨镜追踪断链困局,实现全域精准无感感知

弃ReID跨镜&#xff0c;选镜像无感定位——打破跨镜追踪断链困局&#xff0c;实现全域精准无感感知在安防监控、智慧园区、商业综合体、交通枢纽等场景中&#xff0c;跨摄像头目标追踪是核心需求之一——无论是人员轨迹追溯、异常行为预警&#xff0c;还是资产安全管控、流量数…...