simonarvin / eyeloop

EyeLoop is a Python 3-based eye-tracker tailored specifically to dynamic, closed-loop experiments on consumer-grade hardware.
GNU General Public License v3.0
485 stars 67 forks source link

SystemError: new style getargs format but argument is not a tuple (#39) #42

Open teamcharliegithub opened 11 months ago

teamcharliegithub commented 11 months ago

Having the same issue as #39 - receiving a SystemError in regards to Line 79 of processor.py. I attempted a fix by changing self.blur = [3, 3] to be a tuple, to no avail. I found some talk on StackExchange referencing changing the type of the value inside the tuple, but that also did not work.

I will also say this is occurring from a totally fresh install of EyeLoop. My dependencies are: eyeloop: 0.35 numpy: 1.19.5 opencv-contrib-python: 4.4.0.46 pip: 23.3
pymba: 0.3.7 PyYAML: 6.0.1 setuptools: 68.0.0 wheel: 0.41.2

These are the only packages have installed in my (also fresh) Anaconda virtual environment, which is dedicated for EyeLoop testing. Though the error seems to be the same as in #39, my particular traceback is below:

2023-10-18 00:07:56,428 - eyeloop.run_eyeloop - INFO - Initiating tracking via Importer: cv
    Processing 0 frames per second.
Traceback (most recent call last):
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\USER1\anaconda3\envs\EL3\Scripts\eyeloop.exe\__main__.py", line 7, in <module>
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\run_eyeloop.py", line 110, in main
    EyeLoop(sys.argv[1:], logger=None)
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\run_eyeloop.py", line 43, in __init__
    self.run()
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\run_eyeloop.py", line 94, in run
    self.run_importer()
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\run_eyeloop.py", line 101, in run_importer
    config.importer.route()
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\importers\cv.py", line 68, in route
    self.first_frame()
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\importers\cv.py", line 65, in first_frame
    self.arm(width, height, image)
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\importers\importer.py", line 45, in arm
    config.engine.arm(width, height, image)
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\engine\engine.py", line 85, in arm
    self.iterate(image)
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\engine\engine.py", line 183, in track
    self.pupil_processor.track(img)
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\engine\processor.py", line 112, in track_
    self.thresh() #either pupil or cr
  File "C:\Users\USER1\anaconda3\envs\EL3\lib\site-packages\eyeloop\engine\processor.py", line 79, in pupil_thresh
    self.source[:] = cv2.threshold(cv2.GaussianBlur(cv2.erode(self.source, kernel, iterations = 1), self.blur, 0), self.binarythreshold, 255, cv2.THRESH_BINARY_INV)[1]
SystemError: new style getargs format but argument is not a tuple
    Processing 0 frames per second.
y1h6b commented 8 months ago

you seem to have to make the "self.blur" a tuple(3,3) rather than [3, 3], and the steup again