电容屏物体识别手工制作
电容屏识别物体效果2
电容屏识别物体效果1
电容屏识别物体效果3
电容屏识别物体效果4
电容识别物理效果5
我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。
触摸屏无处不在,成千上万的应用程序中有多种设备和屏幕格式,但我们只找到了一些可以实现对象交互的选项。
我们可以想象有很多创造性的机会来连接这两个世界——你可以通过数字应用程序触摸到的物体和材料,这些应用程序能够显示丰富的交互式内容。
我们的教程建议了使用openFrameworks应用程序创建带有电容触摸屏的对象跟踪的方法。该应用程序可以在Windows或iOS上运行。您将需要openFrameworks的编码经验来运行对象检测应用程序并创建自己的交互式内容。
请注意,本教程处于实验阶段,还有改进的空间。我们希望您能提出建议和问题!
技术背景
为了了解我们的来源,我们需要回到使用相机的红外丙烯酸投影触摸屏,有一些系统能够检测触摸以及基准标记和物体。
为了了解我们的来源,我们需要回到使用相机的红外丙烯酸投影触摸屏,有一些系统能够检测触摸以及基准标记和物体。
( How to make one :
https://www.instructables.com/id/Multi-touch-Table
https://www.instructables.com/id/How-to-build-a-Multi-Touch-surface/
http://ccv.nuigroup.com/#home
In 2012 we created one using ccv )
现在,这项技术的使用越来越少,电容式触摸屏(与我们的智能手机触摸屏相同)也越来越普遍。电容式触摸屏非常准确,价格低廉,使用简单。然而,与红外丙烯酸投影不同,没有常见的方法来创建与对象的交互。我们看到的这种技术的唯一例子是来自Volumique公司,我们相信他们使用的技术与我们在本教程中展示的技术类似。
步骤一:
对于我们的演示,我们使用了以下材料(附属链接)
- 电容式触摸屏http://amzn.to/2ctA8ZLIiyama ProLite T2336MSC-B2或http://amzn.to/2ctA8ZLiPad。请注意,您必须选择电容式触摸屏或具有3个以上触摸点的设备(在屏幕上交互的每个对象需要3个触摸点,通常最近的电容式触摸屏幕支持10点触摸,因此可能同时检测到3个对象+1根手指)
- 与触摸屏建立接触点的垫子-http://amzn.to/2ctzgEp地板保护毡垫。注意,我们第一次尝试使用塑料垫http://amzn.to/2ctzgEp,但它在屏幕上滑动不好,所以除非你想让物体粘在屏幕上,否则请使用较软的材料,如毛毡垫
- 电动油漆http://amzn.to/2cmS4Jm或http://amzn.to/2cmS8JaBare导电涂料
- 油漆刷http://amzn.to/2cmR1cx
- 具有一个平面的对象。
以上链接可能在国内打不开。
步骤2 使用原理
我们正在触摸屏上创建三个形成三角形的触摸点。
该软件正在检测所有触摸点并寻找等腰三角形图案。
我们选择检测具有不同顶角的等腰三角形,这样我们就可以检测不同的物体。此外,知道三角形的顶点,我们可以找到物体的方向/旋转角度。物体的中心估计在三角形的中心。
步骤3:打印和修改标记模板
我们建议使用1到13个不同的对象。如果你想使用多达13个或更多不同的对象,你需要创建非常准确的标记。在获得令人满意的结果之前,您可能需要对具有不同角度的不同三角形进行实验。
您可以创建不同大小的三角形,对于我们提供的小型软件来说,重要的是保持相同的顶角。
步骤4:制作或寻找物体(原文翻译后为对象)
比如橡皮块、长方形的木头块、有具体形状的物理对象。
物体需要至少有一个平面,可以放在屏幕上。
在我们的演示中,我们使用模具制作技术创建了几何形状。我们用海藻酸盐制作了模具,因为它凝固得很快,可以与陶瓷粉末等大多数材料一起使用,我们将其与颜料混合制成我们的物体。我们期待着看到您将使用什么样的物品!
步骤5:创建标记
尽可能准确地按照打印的三角形模板,将3个凸起的垫子粘在物体的平面上
使用导电油墨,在焊盘表面涂漆
用导电墨水连接3个焊盘和物体
如果你不使用导电物体,你需要创建一个连接点,你可以用手在物体的顶部或侧面到达。该点还需要连接到焊盘。
当导电油墨干燥后,您就可以为下一部分做好准备了。
步骤6:准备软件
您需要在系统上设置并运行openFrameworks。
从以下位置下载触摸应用程序:
https://github.com/paul-ferragut/oscTouchObject(windows和openFrameworks,依赖于外部附加组件https://github.com/nneonneo/ofxWin8Touch)
https://github.com/paul-ferragut/iOSoscTouchObject(不幸的是,iOS和openFrameworks,您需要是一名获得许可的苹果开发者才能在iOS上编译该应用程序)
在运行该应用程序之前,您需要修改文件bin/data/settings.xml。在settings.xml文件中写入您正在使用的等腰三角形标记的顶角并保存该文件(例如:在示例图像中,我们使用4个顶角分别为38、91、150和165的对象)
您可以选择使用OSC协议与另一个应用程序通信,您需要更改settings.xml文件中的localhost地址和端口。此外,文件touchObject.h中有一个名为#USE_OSC的标志,您需要取消注释该标志。如果你不需要OSC,你可以注释#USE_OSC标志
当应用程序启动时,您将看到一个带有GUI的暗屏幕。根据您的屏幕分辨率和三角形标记的宽度,您需要调整滑块“distance triangle”。此变量会更改要检测的三角形的最小距离。您可以在屏幕上用3根手指模拟一个标记并形成一个三角形(请参见gif)。
在您能够测试您的对象和标记检测后,您可以开始创建自己的交互式内容!
在我们的演示中,我们用以下openFrameworks插件玩得很开心:
https://github.com/vanderlin/ofxBox2d
https://github.com/bakercp/ofxLight2D
https://github.com/tado/ofxLiquidFun
https://github.com/jacres/of-DeferredRendering
相关文章:

电容屏物体识别手工制作
电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在,成千上万的应用程序中有多种设备和屏幕格式,但我们只找到…...
13JVM进阶
JVM内存模型 1、线程私有的数据区 1)、程序计数器 我们知道,线程是CPU调度的基本单位。在多线程情况下,当线程数超过CPU数量或CPU内核数量时,线程之间就要根据 时间片轮询抢夺CPU时间资源。也就是说,在任何一个确定的时刻&#…...

java与c++中的交换方法
最近在写算法的时候,遇到一个问题。 java中编写swap(交换)方法还需要传入一个数组,但是在c中则不需要。 可以看到,在没有传入数组进行交换数组元素的时候,交换前与交换后的值是一样的。 而在c中ÿ…...

OpenCV中world模块介绍
OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使…...

IMX6ULL板开发——第一个应用程序
实现第一个应用程序:在IMX6ULL开发板上运行程序hello.c #include <stdio.h>/* 执行命令: ./hello weidongshan* argc 2* argv[0] ./hello* argv[1] weidongshan*/int main(int argc, char **argv) {if (argc > 2)printf("Hello, %s!\n", arg…...

MyBatis Generator - 快速生成 实体类 和 映射文件
目录 一、MyBatis Generator 的使用 1.1、生成类和映射文件 1.1.1、在 pom.xml 中引入依赖 1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件 1.1.3、自动生成类 和 映射文件 1.1.4、在 Insert 标签中添加获取主键值的选项 1.1.5、扫描配置…...

点击查看详情 | 网页版微信客户管理系统如何操作试用?
微信作为我们日常生活中最常用的社交应用之一,早已成为我们与朋友、家人和同事保持联系的重要工具,也是营销引流的重要平台。 通过微信营销,可以比较精准定向亲近用户。而微信的功能并没有很能满足做微信营销的人群,所以我们需要借…...

新加坡攻略
文章目录 基础信息入境行李App电信交通餐饮购物法规旅游牛车水(Chinatown)克拉码头(Clarke Quay)东海岸(East Coast)丹戎巴葛(Tanjong Pagar)滨海湾(Marina Bayÿ…...

AM@导数的应用@二阶导数的应用@函数的性态研究@函数图形的绘制
文章目录 概念称呼说明驻点极值和极值点最值极值点和最值比较曲线的凹凸性凹凸性判定定理👺例证明 凹凸性和单调性无必然关系拐点寻找拐点👺 函数图形的绘制例 概念 本文讨论导数的应用:利用导数研究函数的性态相关定理主要通过Lagrange中值定理进行推导…...
【2024秋招】2023-9-14 最右后端开发线下一面
1 自我介绍 2 计算机网络 2.1 说说你对tcp滑动窗口的理解 TCP 滑动窗口是 TCP 协议流量控制的一个重要机制。它的主要目的是确保发送方不会因为发送太多数据而使接收方不堪重负。下面我会详细地描述滑动窗口的概念: 窗口的大小: 滑动窗口的大小&#…...

uniapp无感刷新token实现过程
路漫漫其修远兮,前端道路逐渐迷茫,时隔好久好久终于想起了我还有一个小博客,最近在一直在弄uniapp,属实有被恶心到,但也至少会用了,最近实现了一个比较通用的功能,就是无感刷新token,…...

一步步掌握Java IO的奥秘:深入学习BIO、NIO,实现客户端与服务器通信
众所周知,Java IO是一个庞大的知识体系,很多人在学习的过程中会感到迷茫,甚至学得一头雾水,而我也曾有同样的困惑。因此,本文的目标是帮助大家一步一步深入学习Java IO,从BIO开始,然后引出JDK1.…...

MIT 生物信息课程
youtube链接 Regulatory Genomics (Lecture 07): 这门课程介绍了基因调控的概念,涉及到基因的开启和关闭。这是生物信息学中的一个核心概念,对于理解整个生物网络至关重要。 Deep Learning for Regulatory Genomics (Lecture 08): 在了解了基因调控的基…...

Windows下安装PyTorch(GPU版本)
PyTorch环境配置及安装 初步机器学习,这里记录下一些学习经过,之后以便于自己查看,同时欢迎各位大佬点评,本节是机器计算的一个包的安装和简单验证。 1.流程 确定自己的硬件信息-确定电脑有英伟达(NVIDIAÿ…...
力扣每日一题57:插入区间
题目描述: 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输入&#x…...

大河弯弯:CSS 文档流与三大元素显示模式
文章目录 参考环境文档流概念三大显示模式 内联元素概念常见的内联元素宽高由内容决定 块级元素概念常见的块级元素宽度受容器影响,高度受内容影响 内联块级元素概念常见的内联块级元素折中方案 设置元素的显示模式display 属性内联元素与块级元素的切换为什么要通过…...
第六章:函数(中)
函数的参数 1.位置参数 位置参数是指函数调用时,参数的位置与函数定义中参数的位置对应,从而确定参数的值。 def fight(x,y,z):return .join((z,y,x)) fight(八神庵,打败了...

Top 10 数据恢复工具,可从iPhone 和 iPad 恢复数据
您是否正在寻找最好的 iPad 恢复软件,但不知道哪个选项最好?没有什么可担心的。本文将为您提供有关根据文件类型、设备兼容性和数据丢失原因等因素选择合适的 iPad 恢复软件的提示。此外,前 10 名提到的恢复软件是安全可靠的。 第 1 部分、iP…...
【C++程序员必修第一课】C++基础课程-14:C++ 函数(上)
1 本课主要内容: 函数是什么?函数的声明、定义和调用;函数返回值,函数参数,参数默认值函数参数不同类型的调用方式:传值、指针、数组、常量引用、引用等 2 主要知识点: 函数是什么? …...

android studio打开flutter项目报红
一、android studio打开flutter项目报红,如下图: 二、解决方法: 2.1 在这个build.gradle添加以下代码,如图: 2.2 在build.gradle最顶部添加如下代码: def localProperties new Properties() def localPr…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...

Copilot for Xcode (iOS的 AI辅助编程)
Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…...