目录
cv2
读取图片cv2.imread
展示图片cv2.imshow plt.imshow
code
读取中文路径的图片
cv2.resize
PIL.Image
读取图片Image.open
展示图片plt.imshow
code
cv2.imread(img_path) 读取的图片形状为h w c,其中通道维度为BGR类型
可通过cv2.cvtColor()或img[:,:,::-1]转化为RGB类型的图片
注意:cv2.imread()只能读取英文路径的图片
cv2.imshow('name',img) 其中name为展示的图像名,img为需要展示的图像,能正常展示BGR类型的图片(可直接展示cv2读入的图片,展示RGB图片会发生颜色错乱)
plt.imshow(img) 展示RGB类型图片,加入plt.show()可展示图片
import cv2
import matplotlib.pyplot as plt
img_path='D:\man.png' # 更改自己图片路径
"""法一"""
img1=cv2.imread(img_path)
print(img1.shape) # h w c(其中c维度为BGR形式)
cv2.imshow('img1',img1) #展示BGR形式的图片
cv2.waitKey(0)
cv2.destroyAllWindows()
"""法二"""
img1=cv2.imread(img_path)
# BGR->RGB的两种方式
img1=cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)
# img1=img1[:,:,::-1] # 在维度通道倒序
# plt展示图片
plt.imshow(img1)
plt.show()
cv2.imread()只能读取英文路径下的图片,若读取中文路径,使用
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR)
先采用numpy中的fromfile读取文件,将图片按照int类型读入数据,读入一维数组,
然后通过cv中imdecode对数组解码得到图片(解码后的图片仍为BGR类型)
最后一个参数的含义:
cv2.IMREAD_COLOR 读取彩色图片,可简写为1
cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可简写为0
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道(含透明度信息),可以简写为-1
cv2.resize(img,(w,h)) w h为resize后的新尺寸
import cv2
img_path='D:\man.png' # 更改自己图片路径
img1=cv2.imread(img_path)
h,w,c=img1.shape
scale=0.5
img1=cv2.resize(img1,(int(scale*w),int(scale*h)))
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
Image.open(img_path)读入图片,读入图片形状为w h
PIL类型的图片,可通过打印 img.width img.height展示图片的宽 高,img.size展示图片的w h
通过img=np.array(img),图片形状转化为h w c,其中通道为RGB类型
使用plt展示RGB图片
import matplotlib.pyplot as plt
import PIL.Image as Image
import numpy as np
img_path='D:\man.png'
img2=Image.open(img_path)
print(img2.size) # w h
print(img2.width) # w
print(img2.height) # h
img2=np.array(img2)
print(img2.shape) # h w c(RGB)
# plt展示RGB图片
plt.imshow(img2)
plt.show()