所有人!
我正在尝试将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的源映像?
答案 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格式不能满足此要求,因此会发生错误。