【问题标题】:convert cv2.umat to numpy array将 cv2.umat 转换为 numpy 数组
【发布时间】:2019-07-30 11:12:06
【问题描述】:

Processed_image() 函数返回一个 cv2.Umat 类型值,该值将被重新整形 3维(h, ch, w)到4维(h, ch, w, 1)所以i需要转换 到 numpy 数组,或者如果可能的话也帮助我直接 rehshape cv2.umat 类型变量可以直接重塑并转换为 pytorch 张量,并且可以 分配给 reshape_image_tensor。

img_w=640
img_h=640
img_ch=3
umat_img = cv2.UMat(img)
display_one(umat_img, "RESPONSE")    #function created by me to display image
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
with torch.no_grad():
    processed_img = preprocess_image(umat_img, model_image_size = (img_h, img_ch, img_w))
    #___________write YOUR CODE here________
    reshaped_images_tensor = torch.from_numpy(processed_img.reshape(img_h, img_ch, img_w, 1)).float().to(device)      #images_tensor.reshape(img_h, img_ch, img_w, 1)
    outputs = model(reshaped_images_tensor)
    _, predicted = torch.max(outputs, 1)
    c = predicted.squeeze()
    output_probability(predicted, processed_img, umat_img)
if ord('q')==cv2.waitKey(10):
    exit(0)

【问题讨论】:

    标签: python numpy opencv computer-vision pytorch


    【解决方案1】:

    我没完全听懂你的问题,但是你可以使用“get()”来获取 opencv 的 umat 的 numpy 数据,例如 this

    在将张量输入模型之前,您可能应该 permute 您的张量。

    【讨论】:

      【解决方案2】:

      如果您想在 UMat 中使用数组,只需:

      img_array = cv2.UMat.get(umat_img)
      

      【讨论】:

        【解决方案3】:

        目前的答案在技术上是正确的。只是说清楚,以防万一某些链接发生变化,您可以这样做:

        import cv2
        img_array = umat_img.get()
        

        【讨论】:

          猜你喜欢
          • 2021-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-29
          • 2017-03-08
          • 2012-04-18
          • 2017-12-15
          • 2021-05-14
          相关资源
          最近更新 更多