OpenCV Python:无法将UMat传递给calcHist

时间:2018-11-13 08:46:15

标签: python opencv

所有人!

我正在尝试将cv2.UMat对象传递给cv2.calcHist函数:

a = np.arange(10, dtype=np.uint8)
b = cv2.UMat(a)
cv2.calcHist([b], [0], None, [10], [0, 10])

我收到错误消息

TypeError: images is not a numpy array, neither a scalar

但是似乎cpp版本的OpenCV允许使用UMat作为源映像。

是我做错了还是python OpenCV不允许使用UMat作为calcHist的源映像?

1 个答案:

答案 0 :(得分:0)

IU可以在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.

解码期望包含特定顺序的数据的图像或矩阵,由OpenCV支持的mat-instance完全填充。 UMat格式不能满足此要求,因此会发生错误。