__init__.py 867 B

123456789101112131415161718192021222324252627282930313233
  1. __all__ = []
  2. import sys
  3. import numpy as np
  4. import cv2 as cv
  5. # NumPy documentation: https://numpy.org/doc/stable/user/basics.subclassing.html
  6. class Mat(np.ndarray):
  7. '''
  8. cv.Mat wrapper for numpy array.
  9. Stores extra metadata information how to interpret and process of numpy array for underlying C++ code.
  10. '''
  11. def __new__(cls, arr, **kwargs):
  12. obj = arr.view(Mat)
  13. return obj
  14. def __init__(self, arr, **kwargs):
  15. self.wrap_channels = kwargs.pop('wrap_channels', getattr(arr, 'wrap_channels', False))
  16. if len(kwargs) > 0:
  17. raise TypeError('Unknown parameters: {}'.format(repr(kwargs)))
  18. def __array_finalize__(self, obj):
  19. if obj is None:
  20. return
  21. self.wrap_channels = getattr(obj, 'wrap_channels', None)
  22. Mat.__module__ = cv.__name__
  23. cv.Mat = Mat
  24. cv._registerMatType(Mat)