1.从文件直接读取,并显示图片[H,W,C]

imgH=cv2.imread(imgPath)

问题:读取的图片,如果使用**cv2.imshow(‘title’,imgH)**显示的话,发现图片的加载过程很慢,半天了显示不出来。

解决:

import matplotlib.pyplot as plt

plt.imshow(imgH)  #只是对图片做显示处理,不会显示图片
plt.show() #显示处理后的图像

说明:plt.imshow()函数负责对图像进行处理,并显示其格式,而plt.show()则是将plt.imshow()处理后的函数显示出来。

2.张量格式的图片[1,C,H,W]显示

import torchvision

torchvision.transforms.ToPILImage()(Image_tensors[0].cpu()).show()

3. 对于高维度张量集中显示

print(t.shape)  # [1, 6, 25, 25]
t = t.squeeze(0) 
print(t.shape)  # [6, 25, 25]

这一步就是显示出所有图片,自己根据你的通道数改plt.subplot函数的前两个参数,我这边是6张图片,所有我就绘制了2*3的图片矩阵,效果如下图:

from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt 
import numpy as np
from PIL import Image
import torchvision
#Tensor转成PIL.Image重新显示
for i in range(len(t)):
    plt.subplot(6, 6, i+1)
    plt.title('channal_{}'.format(i+1))
    new_img_PIL = torchvision.transforms.ToPILImage()(t[i]).convert()
    imshow(np.asarray(new_img_PIL))
plt.show()

方法二:

features=nn.Upsample(scale_factor=32, mode='bicubic', align_corners=None)(y.view(-1,12,12,1536).permute(0,3,1,2))
 #scale_factor是上采样倍数
 #y是输入,需要permute一下是转换一下通道的位置
##以下对特征图逐个画出来
for i in range(features.shape[0]):
    feature = features[i,:,:].cpu().detach().numpy()
    save_feature(im_resize, feature, i, detected_classes)
    
#保存图的函数
#im_resize为原始通入到模型的图像,detected_classes是模型输出的这个图像的类别,
def save_feature(im_resize, feature, i, detected_classes,):
    print('save {}'.format(i))
    fig = plt.figure()
    plt.imshow(im_resize)
    plt.imshow(feature, alpha=0.65)
    plt.axis('off')
    plt.axis('tight')
    plt.title("detected classes: {}".format(detected_classes))

    outpath = ""#设置一下你要保存的路径
    plt.savefig(outpath, format='png', transparent=True, dpi=100, pad_inches = 0)
    plt.show()
    print('done\n')
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐