声明,本博客写给自己看的,相当于云笔记,亲爱的陌生人请勿尝试!!!
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,也可以忽略通道维度,直接是长宽也可以