智能硬件与机器视觉:基于树莓派、Python和OpenCV
上QQ阅读APP看书,第一时间看更新

4.2.1 加载和显示图像

我们先从加载和显示图像开始学习Python和OpenCV基础知识,只需要简单的几行代码就能搞定。

首先,在你喜欢的文本编辑器或IDE中打开opencv_tutorial_01.py:


 # 导入必要的库    #1
import imutils  #2
import cv2  #3
    #4
# 加载输入图像并显示其尺寸, #5
# 图像表示为形状NumPy多维数组: #6
# 行数 (height) x 列数 (width) x 通道数 (depth)。   #7
image = cv2.imread("jp.png")    #8
(h, w, d) = image.shape #9
print("width={}, height={}, depth={}".format(w, h, d))  #10
    #11
# 将图像显示在屏幕上     #12
# 需要点击OpenCV打开的窗口并按键盘上的键继续运行其他程序    #13
cv2.imshow("Image", image)  #14
cv2.waitKey(0)  #15

在第2行和第3行,导入了imutils和cv2这两个库。cv2包是OpenCV的,虽然是第2版本的包,但是实际上OpenCV 3也同样适用这个命令(2018年发布的OpenCV 4也是可以的)。imutils包是笔者写的为了方便而封装好的一系列函数的工具包。

在获得了所需的软件之后,接下来就可以将图像从磁盘加载进来了。

要加载图像,需要用到 cv2.imread(“jp.png”)这个命令。如第8行所示,将结果赋给image。image实际上只是一个NumPy数组。

加载完后,需要知道图像的高度和宽度。所以在第9行,调用image.shape来提取图像的高度、宽度和深度。

关于宽度和高度,你可以这样理解:

·一般用#行数x#列数来描述一个矩阵;

·有多少行就代表了图像的高度;

·有多少列就代表了图像的宽度。

因此,用NumPy矩阵表示的图像尺寸实际上可以表示为(高度,宽度,深度)。

深度是图像颜色通道的数量。在本例中,有3个通道,即:蓝色,绿色和红色这3颜色通道。

第10行的打印命令将值输出到终端:


 width=600, height=322, depth=3

如果想要使用OpenCV在屏幕上显示图像,可通过第14行cv2.imshow(“Image”,image)实现。第15行表示等待按键被按下。这很重要,否则图像会在我们看到之前就显示并迅速消失。

注意

你需要单击OpenCV打开的活动窗口,然后按键盘上的按键以继续运行后续脚本。OpenCV无法监控你在终端的输入,所以,你需要单击屏幕上活动的OpenCV窗口并按键盘上的按键才行。