猿问

将 cv2.umat 转换为 numpy 数组

Processed_image() 函数返回一个 cv2.Umat 类型值,该值将从 3 维重塑(h, ch, w)为 4 维,(h, ch, w, 1)因此i需要将其转换为 numpy 数组,或者如果可能,还可以帮助我直接 rehshapecv2.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)


慕斯王
浏览 290回答 3
3回答

开满天机

我没有完全理解你的问题,但是你可以像这样使用“get()”获得一个 opencv 的 umat 的 numpy 数据并且您可能应该在将张量输入模型之前对其进行置换。

慕桂英3389331

如果您想在 UMat 的立场上使用数组,只需执行以下操作:img_array = cv2.UMat.get(umat_img)

一只名叫tom的猫

目前的答案在技术上是正确的。为了清楚起见,以防万一一些链接发生变化,您可以这样做:import cv2 img_array = umat_img.get()
随时随地看视频慕课网APP

相关分类

Python
我要回答