电容屏物体识别手工制作
电容屏识别物体效果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…...
C/C++ OpenCV 矩阵运算
C/C OpenCV 矩阵运算详解 💡 OpenCV 是一个强大的开源计算机视觉和机器学习库,它提供了丰富的矩阵运算功能,这对于图像处理和计算机视觉算法至关重要。本文将详细介绍如何使用 C/C 和 OpenCV 进行常见的矩阵运算。 矩阵的创建与初始化 在进…...

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能
(3) 使用云对象sendEmailCode 发送邮箱验证码,报错送邮箱验证码失败 Error: 已启动测试模式,直接使用:123456作为邮箱验证码即可。 如果是正式项目,需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…...

【目标检测】检测网络中neck的核心作用
1. neck最主要的作用就是特征融合,融合就是将具有不同大小感受野的特征图进行了耦合,从而增强了特征图的表达能力。 2. neck决定了head的数量,进而潜在决定了不同尺度样本如何分配到不同的head,这一点可以看做是将整个网络的多尺…...

牛客小白月赛117
前言:solveABCF相对简单,D题思路简单但是实现麻烦,F题郭老师神力b( ̄▽ ̄)。 A. 好字符串 题目大意:给定字符串s,里面的字母必须大小写同时出现。 【解题】:没什么好说的࿰…...
unix/linux source 命令,其发展历程详细时间线、由来、历史背景
追本溯源,探究技术的历史背景和发展脉络,能够帮助我们更深刻地理解其设计哲学和存在的意义。source 命令(或者说它的前身和等效形式)的历史,与 Unix Shell 本身的发展紧密相连。 让我们一起踏上这段追溯之旅,探索 source 命令的由来和发展历程。 早期 Unix Shell 与命令…...
MapReduce 分布式计算模型
练习题 单词计数 需求:统计每个单词数量 "Hello World Hello Hadoop Hello MapReduce" 实现: map阶段:拆分成单词,执行map函数输出键值对<word, 1> <Hello, 1> <World, 1> <Hello, 1> <…...
【Elasticsearch】suggest
在Elasticsearch中,suggest 是一个非常强大的功能,用于实现自动补全、拼写纠错和模糊搜索等功能。它可以帮助用户更快地找到他们想要的内容,同时提升搜索体验。以下是关于 suggest 的详细使用方法和常见场景。 1\. Suggest 的基本概念 sugges…...

高速收发器
一、高速收发器 1.FPGA高速收发器:GTP,GTX,GTH,GTZ 2.每个Quad有4对高速收发器GT(4个TX和4个RX)和一个COmmon 3.走差分,提高抗干扰性 4.CPLL是每个lane私有的,QPLL是整个Quad的所有通道共享的 5.每个MGT的bank有两对差分参考时钟 6.CPLL的时钟…...
深入浅出Nacos:微服务架构中的服务发现与配置管理利器
在当今的软件开发领域,随着微服务架构的普及,如何有效地进行服务治理和服务配置管理成为了开发者面临的重要挑战之一。阿里巴巴开源的 Nacos(Dynamic Naming and Configuration Service)应运而生,旨在帮助开发者更轻松地构建云原生应用。本文将详细介绍 Nacos 的核心功能、…...
DrissionPage SessionPage模式:轻量级HTTP请求的利器
引言 在Python自动化领域,DrissionPage以其创新的三模式设计脱颖而出。作为专为HTTP请求优化的SessionPage模式,凭借其轻量级架构和高效性能,成为API调用、数据采集等场景的首选方案。本文将深入解析SessionPage的技术特性、核心优势及典型应…...