我想将UMat
转换为其他类型。
我已经尝试使用UMat
方法convertTo
导致出现以下错误:
AttributeError: 'cv2.UMat' object has no attribute 'convertTo'
。
我还尝试使用numpy
方法np.float32
,该方法显然不适用于UMat
:
TypeError: float() argument must be a string or a number, not 'cv2.UMat'
我将使用一个numpy数组,但我需要使用UMat
格式的其他方法。
这是有问题的代码:
array255 = cv2.UMat(int(height), int(width), type=cv2.CV_8UC1, s=(255))
...
hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
...
lhsv = cv2.split(hsv_frame)
s = cv2.subtract(array255, lhsv[1])
v = cv2.subtract(array255, lhsv[2])
#s = s.convertTo(cv2.CV_32F)
#v = v.convertTo(cv2.CV_32F)
s = np.float32(s)
v = np.float32(v)
答案 0 :(得分:1)
UMat
的方法为get()
,返回一个numpy.array
。调用它,而不是使用numpy
类型转换方法。例如
array255f = array255.get().astype('f')
比您可以将其转换回UMat
:
array255fum = cv2.UMat(array255f)
array255fum
的类型为cv2.CV_32F
。