ошибка при запуске кода Python для движений курсора с помощью взгляда - PullRequest
0 голосов
/ 02 июля 2018
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 / Загрузки / Сжатый / Computer_Vision_A_Z_Template_Folder / Code_for_Windows / Код для Windows / what.py', wdir = 'C: / Пользователи / Richa Agrawal / Загрузки / Сжатый / Computer_Vision_A_Z_TemplateWolder Код для Windows ') Traceback (последний вызов был последним):

Файл "", строка 1, в runfile ('C: / Users / Richa Agrawal / Загрузки / Сжатый / Computer_Vision_A_Z_Template_Folder / Code_for_Windows / Код для Windows / what.py', wdir = 'C: / Пользователи / Richa Agrawal / Загрузки / Сжатый / Computer_Vision_A_Z_Template_Folder / Код для Windows для кода «)

Файл "C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py", строка 880, в runfile execfile (имя файла, пространство имен)

Файл "C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py", строка 102, в execfile exec (compile (f.read (), filename, 'exec'), пространство имен)

Файл "C: / Users / Richa Agrawal / Загрузки / Сжатый / Computer_Vision_A_Z_Template_Folder / Code_for_Windows / Код для 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 не разрешен, используйте setsockopt_string

1 Ответ

0 голосов
/ 02 июля 2018

setsockopt ожидает объект int или bytes, но вы передаете объект unicode.

Сообщение об ошибке говорит вам, что делать: используйте setsockopt_string.

socket.setsockopt_string(zmq.SUBSCRIBE, '')

Кроме того, вы можете передать bytes объект setsockopt:

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

Обратите внимание на префикс b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...