python中的cv::UMat::convertTo

python中的cv::UMat::convertTo,python,numpy,opencv,Python,Numpy,Opencv,我想将UMat转换为其他类型 我已经尝试过使用UMat方法convertTo,结果出现以下错误: AttributeError:'cv2.UMat'对象没有属性“convertTo” 我还尝试使用numpy方法np.float32,该方法显然不适用于UMat: array255fum = cv2.UMat(array255f) TypeError:float()参数必须是字符串或数字,而不是“cv2.UMat” 我会使用numpy数组,但对于其他方法,我需要使用UMat格式 以下是相关代码:

我想将
UMat
转换为其他类型

我已经尝试过使用
UMat
方法
convertTo
,结果出现以下错误:

AttributeError:'cv2.UMat'对象没有属性“convertTo”

我还尝试使用
numpy
方法
np.float32
,该方法显然不适用于
UMat

array255fum = cv2.UMat(array255f)
TypeError:float()参数必须是字符串或数字,而不是“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)

UMat
具有方法
get()
,返回一个
numpy.array
。调用它,然后使用
numpy
类型转换方法。例如

array255f = array255.get().astype('f')
然后您可以将其转换回UMat:

array255fum = cv2.UMat(array255f)

array255fum
将是
cv2.CV_32F

完美的类型,这很有效,也有助于我对
UMat
的理解。