Получение ошибки при запуске кода Python для движений курсора с помощью взгляда
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_Template_Folder / Код для 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/Code_for_Windows/ Код для Windows')
Файл "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", строка 880, в исполняемом файле исполняемого файла (имя файла, пространство имен)
Файл "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 ответ
setsockopt
ожидает int
или bytes
объект, но вы передаете unicode
объект.
Сообщение об ошибке говорит вам, что делать: использовать setsockopt_string
,
socket.setsockopt_string(zmq.SUBSCRIBE, '')
Кроме того, вы можете передать bytes
Возражать setsockopt
:
socket.setsockopt(zmq.SUBSCRIBE, b'')
Обратите внимание b
префикс.