先把所有的代码附上
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer=SummaryWriter("logs")
img_path="dataset/hymenoptera_data/train/ants/0013035.jpg"
img_PIL=Image.open(img_path)
img_array=np.array(img_PIL)
writer.add_image("test",img_array,1,dataformats="HWC")
前四句,第一句到第三句是导入库,不多说,第四句是实例化导入的SummaryWriter并指定生成的文件名
第五句是将图片的相对路径赋给变量img_path
第六句打开获得的图片路径,注意这里的图片类型是pil类型的
将获得的图片通过numpy库里面的array方法,将pil类型的图片变成数组
最后这个最值得一说,writer.add_image("test",img_array,1,dataformats="HWC"),test是标题然后img_array是输入的图片,注意这里这个函数只接受tensor,array,string,blobname下面的类型,前面之所以大费周章的将pil转化为数组就是为了解决这个问题,1指的是步长这里本文后面会说,dataformats="HWC"这个也非常重要,不注意的话,程序容易报错。
然后在控制台输入,tensorboard --logdir=logs --port=6007,点击进生成的网址,程序运行结果就可以看到了
如下
好的我们先说一下这个步长,writer.add_image参数的标题相同但是步长是2,你先后输入两张照片的路径,但是不改变关于标题的参数,就会发现你生成的图片可以拖动,但是如果不是同一个标题,也就是说你动了标题的参数,那么第二张图就会显示再第一张图的下面,在有别于第一张图的标题的另一个标题下,
然后我们谈谈dataformats="HWC"这个参数的意思,首先图片的参数会有高度,宽度,通道,这里的H是高度,W是宽度,C是通道,在使用writer.add_image这个方法的时候一定要先查看一下自己的照片的形状,这里我也跟着小土堆敲了一遍代码
如下
然后结果显然是先高度在宽度,最后是通道
结果如下
如果有什么理解不对的地方,请大家斧正