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
的理解。