OpenCV轻松入门:面向Python(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 读取图像

OpenCV提供了函数cv2.imread()来读取图像,该函数支持多种静态图像格式。该函数的语法格式为

其中:

● retval是返回值,其值是读取到的图像。如果未读取到图像,则返回“None”。

● filename表示要读取的图像的完整文件名。

● flags是读取标记。该标记用来控制读取文件的类型,具体如表1-1所示。表1-1中的第一列参数值与第三列数值是等价的。例如cv2.IMREAD_UNCHANGED=-1,在设置参数时,既可以使用第一列的参数值,也可以采用第三列的数值。

表1-1 flags标记值

函数cv2.imread()能够读取多种不同类型的图像,具体如表1-2所示。

表1-2 cv2.imread()函数支持的图像格式

续表

例如,想要读取当前目录下文件名为lena.bmp的图像,并保持按照原有格式读入,则使用的语句为

需要注意,上述程序要想正确运行,首先需要导入cv2模块,大多数常用的OpenCV函数都在cv2模块内。与cv2模块所对应的cv模块代表传统版本的模块。这里的cv2模块并不代表该模块是专门针对OpenCV 2版本的,而是指该模块引入了一个改善的API接口。在cv2模块内部采用了面向对象的编程方式,而在cv模块内更多采用的是面向过程的编程方式。

本书中所使用的模块函数都是cv2模块函数,为了方便理解,在函数名前面加了“cv2.”。但是如果函数名出现在标题中,那么希望突出的是该函数本身,所以未加“cv2.”。

【例1.1】使用cv2.imread()函数读取一幅图像。

根据题目要求,编写代码如下:

上述程序首先会读取当前目录下的图像lena.bmp,然后使用print语句打印读取的图像数据。运行上述程序后,会输出图像的部分像素值,如图1-4所示。

图1-4 图像部分像素值