使用眼睛凝视运行光标移动的python代码时出错

Posted

技术标签:

【中文标题】使用眼睛凝视运行光标移动的python代码时出错【英文标题】:getting an error while running python code for cursor movements using eye gaze 【发布时间】:2018-12-10 09:23:44 【问题描述】:
from pymouse.windows import PyMouse
import zmq
#from pymouse import PyMouse

#mouse setup
m = PyMouse()
x_dim, y_dim = m.screen_size()

#network setup
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:5000")
#filter by messages by stating string 'STRING'. '' receives all messages
socket.setsockopt(zmq.SUBSCRIBE, '')
smooth_x, smooth_y= 0.5, 0.5

while True:
    msg = socket.recv()
    items = msg.split("\n") 
    msg_type = items.pop(0)
    items = dict([i.split(':') for i in items[:-1] ])
    if msg_type == 'Pupil':
        try:
            my_gaze = items['norm_gaze']

            if my_gaze != "None":
                 raw_x,raw_y = map(float,my_gaze[1:-1].split(','))

                # smoothing out the gaze so the mouse has smoother movement
                smooth_x += 0.5 * (raw_x-smooth_x)
                smooth_y += 0.5 * (raw_y-smooth_y)

                x = smooth_x
                y = smooth_y

                y = 1-y # inverting y so it shows up correctly on screen
                x *= x_dim
                y *= y_dim

                x = min(x_dim-10, max(10,x))
                y = min(y_dim-10, max(10,y))

                m.move(x,y)
        except KeyError:
            pass
    else:
        # process non gaze position events from plugins here
        pass`

在这里运行此代码时出现错误:

runfile('C:/Users/Richa Agrawal/Downloads/Compressed/Computer_Vision_A_Z_Template_Folder/Code_for_Windows/Code for Windows/what.py', wdir='C:/Users/Richa Agrawal/Downloads/Compressed/Computer_Vision_A_Z_Template_Folder/Code_for_Windows/ Windows 代码') Traceback(最近一次调用最后一次):

文件“”,第 1 行,在 runfile('C:/Users/Richa Agrawal/Downloads/Compressed/Computer_Vision_A_Z_Template_Folder/Code_for_Windows/Code for Windows/what.py', wdir='C:/Users/Richa Agrawal/Downloads/Compressed/Computer_Vision_A_Z_Template_Folder/Code_for_Windows/Windows 代码')

文件“C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 880 行,在运行文件中 execfile(文件名,命名空间)

文件“C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第 102 行,在 execfile exec(编译(f.read(),文件名,'exec'),命名空间)

文件“C:/Users/Richa Agrawal/Downloads/Compressed/Computer_Vision_A_Z_Template_Folder/Code_for_Windows/Code for Windows/what.py”,第 20 行,在 socket.setsockopt(zmq.SUBSCRIBE, '')

文件“zmq/backend/cython/socket.pyx”,第 374 行,在 zmq.backend.cython.socket.Socket.set (zmq\backend\cython\socket.c:4610)中

TypeError: unicode not allowed,使用 setsockopt_string

【问题讨论】:

【参考方案1】:

setsockopt 需要 intbytes 对象,但您传递的是 unicode 对象。

错误信息告诉你该怎么做:使用setsockopt_string

socket.setsockopt_string(zmq.SUBSCRIBE, '')

或者,您可以将bytes 对象传递给setsockopt

socket.setsockopt(zmq.SUBSCRIBE, b'')

注意b 前缀。

【讨论】:

感谢先生的回复,在更正后,代码工作正常,但没有给出任何输出......任何建议 据我从您发布的代码中可以看出,它不应该提供任何输出,但如果将正确的命令发送到套接字,它应该移动鼠标。您还有其他程序向套接字发送数据吗? 顺便说一句,欢迎来到 ***。如果您的问题的原始问题已经解决,如果您通过单击旁边的复选标记接受我的回答,我将不胜感激。评论可能不是解决您的新问题的好地方,最好为此提出一个新问题。

以上是关于使用眼睛凝视运行光标移动的python代码时出错的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse经常使用快捷键

当我在 coursera 中使用 python 在数据科学中运行以下代码时出错

使用 xampp 服务器运行 python 时出错

赵雅智_Swift_swift凝视

jsp的凝视可能会影响页面载入速度

为啥两个光标同时在嵌入式应用程序中运行和移动?