Я думаю, причину этой ошибки можно найти в документации по декодированию из pyzbar:
def decode(image, symbols=None, scan_locations=False):
"""Decodes datamatrix barcodes in `image`.
Args:
image: `numpy.ndarray`, `PIL.Image` or tuple (pixels, width, height)
symbols (ZBarSymbol): the symbol types to decode; if `None`, uses
`zbar`'s default behaviour, which is to decode all symbol types.
scan_locations (bool): If `True`, results will include scan
locations.
Decode ожидает изображение или матрицу, содержащую данные в определенном порядке, который заполняется экземпляром мата, поддерживаемым OpenCV. UMat-формат не выполняет это требование, поэтому будет возникать ошибка.