如何将图中的图片用于进一步的代码

How to use a picture from a plot for the further code

我尝试使用绘图作为我进一步代码的图像。我在我的预训练模型中加载了一张图像,我的输出是一个张量变量。在下一步中,我用 Image(img_hr).show(figsize=(18,15)) 绘制它。在此之后,我想使用图中的图片来转换颜色。但问题是,我不能使用变量 img_hr 因为类型是张量。

我的想法是在倒数第三行看剧情。 imagehsv = cv2.cvtColor(img_hr, cv2.COLOR_BGR2HSV)的输入需要是一个数组,我不知道如何转换绘图。

这是错误:

imagehsv = cv2.cvtColor(img_hr, cv2.COLOR_BGR2HSV) error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'cvtColor' Overload resolution failed:

  • src is not a numpy array, neither a scalar
  • Expected Ptr<cv::UMat> for argument 'src'

我是python的新人,所以如果描述不当或用词不当还请见谅。我希望一切都清楚,否则请随时提问。

剧情图片如下:

有人有想法吗?非常感谢

   from fastai import *
from fastai.vision import *
from fastai.callbacks.hooks import *
from fastai.utils.mem import *
import numpy as np
import cv2 as cv2
import matplotlib as mpl
import matplotlib.pyplot as plt 



def acc_camvid(input, target):
        target = target.squeeze(1)
        mask = target != void_code
        return (input.argmax(dim=1)[mask]==target[mask]).float().mean()

learn=load_learner(r'C:\pretrained_model')


image= r"C:\image.png"

img = open_image(image); img.shape
_,img_hr,b = learn.predict(img)
Image(img_hr).show(figsize=(18,15))    

#image = cv2.imread(Image(img_hr))

imagehsv = cv2.cvtColor(img_hr, cv2.COLOR_BGR2HSV)
plt.imshow(fixColor(imagehsv))

fastai 适用于 PIL 图像类型。 所以你的变量 img_hr 是一个 Image.

OpenCV 使用 NumPy ndarray 类型。您需要将 Image 转换为 ndarray:

_, img_hr, b = learn.predict(img)
img_hr = np.array(img_hr)

# PIL uses RGB channel order, not BGR like OpenCV default
imagehsv = cv2.cvtColor(img_hr, cv2.COLOR_RGB2HSV)

# Display your result in HSV color space
cv2.imshow("Image HSV", imagehsv)
cv2.waitKey()