【无标题】

Python - 分步指南

这是入门页面上描述的功能性应用程序的四步指南的更详细版本。 本指南面向 Tobii Pro SDK 的初次使用者,他们可能对 Python 编程也很陌生。

第一个眼动追踪应用程序的分步指南
以下文字旨在指导您 - Pro SDK 的新用户(可能也是眼动追踪和 Python 编程的新手) - 编写您的第一个眼动追踪研究应用程序!
先决条件:您的计算机上应安装 Python 3.8 和 Pro SDK(请参阅入门页面上的安装部分),并且应通过 USB 或网络连接眼动仪。
首先,准备工作!
本指南不会提供完整的可运行脚本,您只需将其复制粘贴到编辑器中并运行即可。 相反,我们尝试描述代码背后的概念和原因,您可以选择在现有 Python 代码或全新文件中使用(或复制粘贴…)这些片段。 但是,如果您想要最简单的场景,您可以将此处描述的每一行代码按照它们出现的顺序复制粘贴到一个新文件中,它应该可以很好地运行。
在您开始在 Python 应用程序中使用 Pro SDK 函数之前,您需要导入 Pro SDK 模块。 这个模块被称为“tobii_research”,但为了方便起见,我们将在本例中使用“import as”功能给它一个新的、更短的名称(“tr”)。
为此,请将以下内容放在文件的开头:

import tobii_research as tr

让我们也导入时间模块,以便我们稍后可以添加一些睡眠。

import time

第 1 步:找到眼动仪!
现在您可以开始使用 Tobii Pro 眼动追踪了!
在里面tobii_research模块有一个搜索眼动仪的功能:find_all_eyetrackers()
此功能将查找通过 USB 或以太网电缆直接连接到您的计算机的眼动仪,以及与您的计算机连接到同一网络的眼动仪。 要搜索眼动仪,只需调用find_all_eyetrackers()并将输出分配给一个新变量:

found_eyetrackers = tr.find_all_eyetrackers()

find_all_eyetrackers() 的返回值是一个 EyeTracker 对象的元组。 您可以访问(第一个)眼动仪的元数据,并打印它,如下所示:

my_eyetracker = found_eyetrackers[0]
print("Address: " + my_eyetracker.address)
print("Model: " + my_eyetracker.model)
print("Name (It's OK if this is empty): " + my_eyetracker.device_name)
print("Serial number: " + my_eyetracker.serial_number)

第 2 步:校准眼动仪
坦率地说,校准有点复杂。 因此,如果这确实是您的第一个眼动追踪应用程序,我们建议您跳过校准(所有 Tobii Pro 眼动追踪器都预先配置了默认校准,因此即使您跳过校准也可以获得眼动数据),或者使用 Eye Tracker Manager (ETM) 执行校准。 您可以在运行应用程序之前使用 ETM 校准眼动仪,或者使用直接启动到校准模式的命令行参数(从您的代码中)调用 ETM。 在这里阅读更多。
如果您真的想深入了解如何创建自己的校准程序,请阅读本网站通用概念区的校准部分,并查看 SDK 参考指南中的校准代码示例。
第 3 步:获取注视数据!
眼动仪以固定间隔(每秒 30、60、120、300 次等,取决于型号)输出凝视数据样本。 要获取这些数据,您需要告诉 Pro SDK 您要订阅注视数据,然后为 SDK 提供所谓的回调函数。 回调函数和其他函数一样,只是你永远不需要自己调用它; 相反,每次有新的注视数据样本时都会调用它。 因此,在此回调函数中,您可以对注视数据执行任何操作,例如打印其中的某些部分:

def gaze_data_callback(gaze_data):
    # Print gaze points of left and right eye
    print("Left eye: ({gaze_left_eye}) \t Right eye: ({gaze_right_eye})".format(
        gaze_left_eye=gaze_data['left_gaze_point_on_display_area'],
        gaze_right_eye=gaze_data['right_gaze_point_on_display_area']))

Great! 所以现在我们有一个函数可以打印它获得的任何注视数据。
现在我们只需要告诉 SDK 当有新的注视数据时应该调用这个函数。 并告诉眼动仪开始追踪!
这是通过一次调用subscribe_to步骤 1 中眼动仪对象的功能:

my_eyetracker.subscribe_to(tr.EYETRACKER_GAZE_DATA, gaze_data_callback, as_dictionary=True)

第一个输入参数是一个常量,告诉 SDK 我们想要的是注视数据。 您可以从眼动仪获取其他类型数据的其他常量(有关详细信息,请参阅 SDK 参考指南)。
第二个参数是我们刚刚定义的回调函数,第三个参数告诉SDK我们想要数据作为字典。
这就是从眼动仪获取注视数据所需的全部内容,所以现在让程序打印一会儿数据:

time.sleep(5)

第4步:结束!
现在我们已经收集了我们想要的注视数据,我们应该让眼动仪(和 SDK)知道我们已经完成了。 您可以通过取消订阅注视数据来执行此操作,几乎与您订阅的方式相同:

my_eyetracker.unsubscribe_from(tr.EYETRACKER_GAZE_DATA, gaze_data_callback)

And that’s all folks!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值