python:图片显示
imgH=cv2.imread(imgPath)问题:读取的图片,如果使用cv2.imshow(‘title’,imgH)显示的话,发现图片的加载过程很慢,半天了显示不出来。解决:import matplotlib.pyplot as pltplt.imshow(imgH)#只是对图片做显示处理,不会显示图片plt.show() #显示处理后的图像说明:plt.imshow()函数...
·
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')
更多推荐
已为社区贡献1条内容
所有评论(0)