maxCorners : Maximum number of corners to extract. If there are more corners than are found, the strongest of them is returned.
maxCorners <= 0 implies that no limit on the maximum is set and all detected corners are returned.
This suggests that an input such as "maxCorners": -1 in the configuration is valid. However, doing so fails, because opencv does not permit negative values for this parameter:
Traceback (most recent call last):
File "/home/danielevans/repositories/karios/karios/karios.py", line 319, in <module>
sys.exit(main(sys.argv[1:]))
^^^^^^^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/karios.py", line 313, in main
match_and_plot.process(args.mon, args.ref, args.mask, args.resume)
File "/home/danielevans/repositories/karios/karios/karios.py", line 280, in process
points = self._get_points(resume, monitored_image, reference_image, mask)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/karios.py", line 148, in _get_points
points = self._do_klt(monitored_image, reference_image, mask, csv_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/karios.py", line 127, in _do_klt
points = self._handle_klt_results(dataframe_gen, csv_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/karios.py", line 64, in _handle_klt_results
for dataframe in results:
File "/home/danielevans/repositories/karios/karios/klt_matcher/matcher.py", line 200, in match
points = self._match_tile(x_off, y_off, mon_img, ref_img, mask)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/klt_matcher/matcher.py", line 261, in _match_tile
results = klt_tracker(
^^^^^^^^^^^^
File "/home/danielevans/repositories/karios/karios/klt_matcher/matcher.py", line 100, in klt_tracker
p0 = cv2.goodFeaturesToTrack(ref_data, mask=mask, **feature_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.8.1) /home/conda/feedstock_root/build_artifacts/libopencv_1698890291961/work/modules/imgproc/src/featureselect.cpp:389: error: (-215:Assertion failed) qualityLevel > 0 && minDistance >= 0 && maxCorners >= 0 in function 'goodFeaturesToTrack'
The README states that:
This suggests that an input such as
"maxCorners": -1
in the configuration is valid. However, doing so fails, becauseopencv
does not permit negative values for this parameter:Using a value of 0 works as expected.