Read the statement by Michael Teeuw here.
MMM-Face-Reco-DNN TypeError: '<' not supported between instances of 'numpy.ndarray' and 'str'
-
@ghiesseldorf ```
[ERROR] Whoops! There was an uncaught exception…
[2020-07-20 13:16:36.029] [ERROR] PythonShellError: TypeError: ‘<’ not supported between instances of ‘numpy.ndarray’ and ‘str’
at PythonShell.parseError (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:246:21)
at terminateIfNeeded (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:129:32)
at ChildProcess. (/home/pi/MagicMirror/modules/MMM-Face-Reco-DNN/node_modules/python-shell/index.js:121:13)
at ChildProcess.emit (events.js:200:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
----- Python Traceback -----
File “modules/MMM-Face-Reco-DNN/tools/facerecognition.py”, line 143, in
if minDistance < args[“tolerance”]: {
traceback: 'Traceback (most recent call last):\n File ’ +
'“modules/MMM-Face-Reco-DNN/tools/facerecognition.py”, line ’ +
‘143, in \n if minDistance < args[“tolerance”]:\n’ +
"TypeError: ‘<’ not supported between instances of " +
“‘numpy.ndarray’ and ‘str’\n”,
executable: ‘python3’,
options: null,
script: ‘modules/MMM-Face-Reco-DNN/tools/facerecognition.py’,
args: [
‘–cascade=modules/MMM-Face-Reco-DNN/tools/haarcascade_frontalface_default.xml’,
‘–encodings=modules/MMM-Face-Reco-DNN/tools/encodings.pickle’,
‘–usePiCamera=1’,
‘–source=0’,
‘–rotateCamera=0’,
‘–method=dnn’,
‘–detectionMethod=hog’,
‘–interval=2000’,
‘–output=0’,
‘–extendDataset=False’,
‘–dataset=modules/MMM-Face-Reco-DNN/dataset/’,
‘–tolerance=0.6’
],
exitCode: 1 -
It does look like there is a dataclass issue with the “tolerance” variable. Running facerecognition.py from the commandline with only the --cascade & --encodings parameters, the module executes. However, if adding the --tolerance parameter which alters the variable from the default value, it fails on the boolean statement. Also, even commenting out the variable in the MM config.js file apparently still passes something to the module for this variable, because it fails the same as including the --tolerance value at stand alone startup. So, any thoughts on how to fix it??
-
FIXED: updated the ap.add_argument statement (line 66) of facerecognition.py to include “type=float” on the --tolerance variable
-
@ghiesseldorf good catch! why suddenly float after all this time?
-
@sdetweil “after all this time” is right! I kept telling myself the issue couldn’t be the code itself because there were no posts about it on the forum, so it had to be something I (or my environment) was doing wrong.
-
@ghiesseldorf I was working on a 4 yr old piece of code a couple weeks ago that was suddenly failing. turns out the node version fixed some expression evaluation problem, and boom it broke old unchanged code,
now, the expression should have returned false, as it does now. but did return true. -
@ghiesseldorf Thanks a lot, I had the same error after the last update and it fixed it for me