Python 3.x 如何将列表转换为cv::UMat?
我有这个列表,这个列表来自dlib探测器:Python 3.x 如何将列表转换为cv::UMat?,python-3.x,opencv,Python 3.x,Opencv,我有这个列表,这个列表来自dlib探测器: dets = detector(frame, 0) dets = [list(rect_to_bb(dets[0]))] print(dets) [[277, 294, 150, 149]] 如何将此列表转换为Umat faces = cascade.detectMultiScale(gray, 1.3, 5) print(faces) [[259 264 182 182]] 例外情况是,当我使用列表时 _, landmarks = fac
dets = detector(frame, 0)
dets = [list(rect_to_bb(dets[0]))]
print(dets)
[[277, 294, 150, 149]]
如何将此列表转换为Umat
faces = cascade.detectMultiScale(gray, 1.3, 5)
print(faces)
[[259 264 182 182]]
例外情况是,当我使用列表时
_, landmarks = facemark.fit(gray, dets)
TypeError: Expected cv::UMat for argument 'faces'
请看为什么您认为需要将其转换为UMat?因为错误消息?如果是这样,那么这很可能是一个X-Y问题。当参数类型解析失败时,通常会出现此消息。它首先尝试转换为Mat,然后在第二次尝试时尝试UMat,只有最后一次失败才会产生错误,因此可能会产生误导。如果您只需要将dets设置为一个简单的numpy数组而不是列表,我不会感到惊讶。很难说准确无误。支持丹的评论。对于cv2.FillConverExpoly的points参数,我得到了相同的错误,因为我传递了一个numpy数组。在我的例子中,解决方案只是将数组的dtype设置为np.int32,因此不需要实际转换为UMat。
dets = cv2.UMat(np.array(dets, dtype=np.uint8))