【学习笔记】一些基础

比如

import skimage.io as io
image = io.imread(image_dir).astype('float') 

这样得到的image是(h,w,c)的三通道格式

再tensor里默认的是(c,h,w)

需要image = image.transpose(2,0,1)

维度的扩展作用,比如(1,2,3)可插入的地方就有四个,分别是0,1,2,3。见缝插针的感觉。

IIn [44]: path,path_rgb
Out[44]:略


In [47]: img = Image.open(path)

In [48]: imgrgb = Image.open(path_rgb)

In [49]: img,imgrgb #由下面的mode,说明PIL库能识别灰度图和RGB图
Out[49]:
(<PIL.TiffImagePlugin.TiffImageFile image mode=P size=4288x2848 at 0x7F9CE709CB38>,
 <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=4288x2848 at 0x7F9CE7093FD0>)

In [50]: img.size,imgrgb.size #但是PIL.Image的size只能查看(w,h)
Out[50]: ((4288, 2848), (4288, 2848))

In [51]: img1 = np.array(img)

In [52]: imgrgb1=np.array(imgrgb)

In [53]: img1.shape,imgrgb1.shape #用np.array强制转换成numpy格式后,灰度图就没有通道了分别是(h,w)和(h,w,c)
Out[53]: ((2848, 4288), (2848, 4288, 3))

In [54]: img2 = io.imread(path)

In [55]: imgrgb2 = io.imread(path_rgb)

In [56]: img2.size,imgrgb2.size
Out[56]: (36636672, 36636672)

In [57]: img2.shape,imgrgb2.shape #用io.imread来读取图片,可见无论是灰度还是RGB图片都转换成(h,w,c)的格式
Out[57]: ((2848, 4288, 3), (2848, 4288, 3))
  • tensor的加减乘除的重载就是对应位置的元素的加减乘除,如果不一致我遇到的问题是(batch-size,4,512,512)和(batch_size,1,512,512)之间运算,为了算一个f1_score。实验了一下运算就是在对应的batch里,4通道图片的每一个通道和1通道图片相运算(二维对应位置元素的运算)

猜你喜欢

转载自blog.csdn.net/zzzpy/article/details/88082168