python中读取显示图片的几种方式

声明,本博客写给自己看的,相当于云笔记,亲爱的陌生人请勿尝试!!!

OpenCV

安装

pip install opencv-python

使用

import cv2

img = cv2.imread("./data/img/img1.jpg")

# 读取图片并显示信息,读取的数据为numpy.ndarray
print(img[:,:,2].shape)
print(img.shape)
print(type(img))

# 显示图片
cv2.imshow("窗口名", img)
cv2.waitKey(0)  # 等待任意按键按下,相当于C语言system("pause")
cv2.destroyAllWindows()  # 销毁所有窗口

输出结果为

(1000, 915)
(1000, 915, 3)
<class 'numpy.ndarray'>

这里需要注意的是,前两维度是长和宽,第三维度是通道数(B,G,R),相当于三个通道叠加,每一个通道位置像素点的取值都是0-255

PIL.Image

from PIL import Image
im = Image.open('./data/img/img.jpg')
print(type(im))
im.show()

输出结果:

<class 'PIL.JpegImagePlugin.JpegImageFile'>

也可以将PIL.Image转换成numpy.array,这样也提醒我们也可以用cv2来显示numpy.array

im_array = np.array(im)
print(im_array.shape)
print(type(im_array))

cv2.imshow("test", im_array)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果为:

(450, 800, 3)
<class 'numpy.ndarray'>

插个题外话,只要是满足(,,3)格式的numpy.array都可以用cv2显示

import cv2
import numpy as np

im = np.random.random((322, 765, 3))
print(im)
print(im.shape)
cv2.imshow("test", im)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

matplotlib

import matplotlib.pyplot as plt  # plt 用于显示图片
import matplotlib.image as mpimg  # mpimg 用于读取图片
import numpy as np

lena = mpimg.imread('./data/img/img.jpg')
print(lena.shape)

plt.imshow(lena)
plt.axis('off')
plt.show()

结果如下:

<class 'numpy.ndarray'>
(450, 800, 3)

它读取和显示的结果也是(长,宽,通道(3))的numpy.array,也可以忽略通道维度,直接是长宽也可以

发布了3 篇原创文章 · 获赞 0 · 访问量 133

猜你喜欢

转载自blog.csdn.net/weixin_43904540/article/details/104084629