Image,cv2读取图片的numpy数组的转换和尺寸resize变化

几种图片尺寸修改和参数总结

(from torchvision import transforms as T

显示尺寸格式的不同

  • Image类型和T进行resize的图片的size属性显示参数顺序是W、H
  • cv2的显示shape的显示参数顺序是H、W、C
  • T.ToTensor()(img),将图片转换为tensor类型,显示是size()方法,例如,
import numpy as np
from PIL import Image
from torchvision import transforms as T
# import matplotlib.image as Img

img = Image.open('4.jpg')
img_tran = T.Resize((512,256))(img)
print(img_tran.size)   #(256, 512)
print(np.array(img_tran).shape)  # (512, 256, 3)
img_to = T.ToTensor()(img_tran)
img_to_array = np.array(img_to)
print(img_to.size()) #torch.Size([3, 512, 256])
print(img_to_array.shape) # (3, 512, 256)
  • 可以看出size()方法显示的是将通道放在第一位了。

修改图片尺寸的函数参数顺序

-T.Resize((H,W))(img)

  • img.resize((W,H))、cv2.resize(img_read,(W,H))

Image,cv2读取图片的numpy数组的转换和尺寸resize变化_第1张图片

Image图片数据和numpy数据的相互转换

Image图片转换为numpy数据

np.array(img)

from PIL import Image
import numpy as np
img = Image.open('4.jpg')
img_array = np.array(img)

numpy数据转换为Image图片

Image.fromarray(img_arr.astype(‘uint8’))
Image.fromarray(np.uint8(img))

from PIL import Image
import numpy as np
img = Image.open('4.jpg')
img_array = np.array(img)
img_image = Image.fromarray(img_arr.astype('uint8'))

Image尺寸显示和numpy的shape显示问题

Image.size属性显示的是**宽、高**
img_array.shape属性,显示的是**高、宽、通道**

from PIL import Image
from torchvision import transforms as T
import numpy as np
img = Image.open('4.jpg')
img_array = np.array(img)
print(img.size)   # (720, 1160)
print(img_arr.shape)  # (1160, 720, 3)

plt.figure()

plt.subplot(1,3,1)
plt.imshow(img)

plt.subplot(1,3,2)
plt.imshow(img_array)
plt.show()

Image,cv2读取图片的numpy数组的转换和尺寸resize变化_第2张图片

img.resize(w, h),T.Resize((h,w))(img),cv2.resize(img,(w,h))

功能:将读取后的图片尺寸的宽和高修改

import cv2
from PIL import Image
from torchvision import transforms as T

img = Image.open('4.jpg')
img_resize = img.resize((512,256))
img_tran = T.Resize((512,256))(img)
img_array = np.array(img)

img_read = cv2.imread('4.jpg')
img_cv2 = cv2.resize(img_read,(512,256))

print(img_resize.size)  #(512, 256)
print(img_array.shape)  #(1160, 720, 3)
print(img_tran.size)  # (256, 512)
print(img_cv2.shape)  # (256, 512, 3)

plt.figure()

plt.subplot(1,3,1)
plt.title('img_resize')
plt.imshow(img_resize)

plt.subplot(1,3,2)
plt.title('img_tran')
plt.imshow(img_tran)

plt.subplot(1,3,3)
plt.title('img_cv2')
plt.imshow(img_cv2)

plt.show()

你可能感兴趣的:(笔记,一些自己的小用法,#,python——Numpy,numpy,python,深度学习)