PIL.Image cv2读取图片,cv2 plt展示图片(含详细代码)

目录

cv2

读取图片cv2.imread

展示图片cv2.imshow plt.imshow

code

读取中文路径的图片

cv2.resize

PIL.Image

读取图片Image.open

展示图片plt.imshow

code

cv2

读取图片cv2.imread

        cv2.imread(img_path) 读取的图片形状为h w c,其中通道维度为BGR类型

        可通过cv2.cvtColor()或img[:,:,::-1]转化为RGB类型的图片

        注意:cv2.imread()只能读取英文路径的图片

展示图片cv2.imshow plt.imshow

        cv2.imshow('name',img) 其中name为展示的图像名,img为需要展示的图像,能正常展示BGR类型的图片(可直接展示cv2读入的图片,展示RGB图片会发生颜色错乱)

        plt.imshow(img) 展示RGB类型图片,加入plt.show()可展示图片

code

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

        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()

PIL.Image

读取图片Image.open

        Image.open(img_path)读入图片,读入图片形状为w h

        PIL类型的图片,可通过打印 img.width img.height展示图片的宽 高,img.size展示图片的w h

        通过img=np.array(img),图片形状转化为h w c,其中通道为RGB类型

展示图片plt.imshow

        使用plt展示RGB图片

code

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()

你可能感兴趣的:(算法,opencv,计算机视觉,python)