深度学习实践:计算机视觉
上QQ阅读APP看书,第一时间看更新

2.1 读图、展示和保存新图

读图、展示和保存主要会用到三个函数,分别为cv2.imread()、cv2.imshow()和cv2. imwrite()。

下面的代码分别给出了使用三个函数进行读图、展示和保存新图的示例。

     1 import cv2
     2
     3 image = cv2.imread('test.jpg')
     4
     5 print(f "width: {image.shape[1]} pixels")
     6 print(f "height: {image.shape[0]} pixels")
     7 print(f "channels: {image.shape[2]}")
     8
     9 cv2.imshow("Image", image)
    10 cv2.waitKey(0)
    11
    12 cv2.imwrite("new_image.jpg", image)

上述示例中,首先使用cv2.imread()来读取图像,可以简单地传入一个图片的地址参数,并返回一个代表图片的NumPy数组。它还有第二个参数,表示读取图片返回的形式,有三种选择:cv2.IMREAD_COLOR、cv2.IMREAD_GRAYSCALE和cv2.IMREAD_UNCHANGED,其意义可从字面获取,其中IMREAD_UNCHANGED表示不变,比如有alpha通道,它会读取。alpha通道的作用是按比例将前景像素和背景像素进行混合,来衡量图像的透明度。另外也可以使用数字来表达读图模式,比如1,0或−1分别表示COLOR、GRAYSCALE和UNCHANGED。

OpenCV采用的格式为H×W×C,即高度×宽度×通道数,通道顺序为BGR,这与Python的Pillow库(RGB)不同。

第5~7行程序代码的作用便是获取该图片的高度、宽度和通道数,第9行可将图片显示出来,效果如图2-1所示,第一个参数为窗口名字的字符串,第二个参数为OpenCV读入图片返回的Numpy对象,当按下键盘上某个键时,第10行会停止图片显示,执行后续语句,数字0表示按键后0毫秒执行。第12行表示保存为新的图片,参数为保存地址和图像对象。

图2-1 图像展示