code: def recognize_ndarray(self, ndarray):
          
          if self._recognize_raw_image_func is None:
              raise RuntimeError('NumPy missing')
          height, width = ndarray.shape[:2]
          bpp = ndarray.shape[2] if len(ndarray.shape) > 2 else 1
          ptr = self._recognize_raw_image_func(self.alpr_pointer, ndarray.flatten(), bpp, width, height)
          json_data = ctypes.cast(ptr, ctypes.c_char_p).value
          json_data = _convert_from_charp(json_data)
          
          # there is a bug in the openalpr python bindings
          # sometimes there are real numbers with "," as the decimal point..!
          # print("openalpr_lib : recognize_ndarray : json_data =", json_data)
          p = re.compile('\d(\,)\d')
          json_data = p.subn(".", json_data)[0]
          
          response_obj = json.loads(json_data)
          self._free_json_mem_func(ctypes.c_void_p(ptr))
          return response_obj
docs: This causes OpenALPR to attempt to recognize an image passed in as a numpy array.
  
          :param ndarray: numpy.array as used in cv2 module
          :return: An OpenALPR analysis in the form of a response dictionary