如何用cv2 imread在Python中读取图像

711 阅读2分钟

cv2.imread()方法从指定的文件路径加载图像。如果图像不能被读取(因为权限不当、 文件丢失、 不支持或无效的格式),那么cv2.imread()方法返回一个空矩阵。

Python OpenCV

OpenCV是一个主要针对实时计算机视觉的编程函数库。它最初是由英特尔开发的,后来由Willow Garage支持,然后是Itseez。该库是跨平台的,在开源的BSD许可下可以免费使用。

我们将使用OpenCV(开源计算机视觉)打开一个图像。OpenCV-Python是为解决计算机视觉问题而设计的Python绑定库。

安装Python OpenCV

为了在Python中使用OpenCV,我们必须安装opencv-python模块:

python3 -m pip install opencv-python

# OR

pip install opencv-python

为了在我们的项目中使用opencv-python,我们必须在文件中导入cv2模块:

import cv2

Python cv2.imread()

要在Python中使用OpenCV读取图像,请使用cv2.imread()方法。 cv2.imread()方法从指定的文件中加载一个图像。

语法

cv2.imread(path, flag)

参数

path:它是一个字符串,代表要读取的图像的路径。
标志:它指定了应该如何读取图像。它的默认值是cv2.IMREAD_COLOR。 下面描述了所有三种类型的标志。

  1. cv2.IMREAD_COLOR:它定义了加载彩色图像。任何图像的透明度都会被忽略。这是一个默认的标志。另外,我们可以为这个标志传递整数值1
  2. cv2.IMREAD_GRAYSCALE:它定义了以灰度模式加载图像。另外,我们也可以给这个标志的整数值为0
  3. cv2.IMREAD_UNCHANGED。它解释了以这种方式加载图像,包括alpha通道。另外,我们也可以为这个标志传递整数值-1

返回值

该方法返回一个从指定文件系统加载的图像。

例子

写下以下代码:

import cv2

path = 'info.png'

# Using cv2.imread() method
image = cv2.imread(path)

# Displaying the image
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destoryAllWindows()

输出

Read Image using OpenCV

cv2.waitKey()函数等待用户按下任何键。

cv2.destroyAllWindows()函数关闭所有打开的窗口。

以灰度模式加载图像

如果你想将RGB图像转换为灰度图像,那么这将是有帮助的。

写下以下代码:

import cv2

path = 'info.png'

# Using cv2.imread() method
image = cv2.imread(path, 0)

# Displaying the image
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destoryAllWindows()

输出

imread grayscale

cv2.IMREAD_UNCHANGED

我们可以将标志cv2.IMREAD_UNCHANGED传递给cv2.imread()函数。

import cv2

path = 'info.png'

# Using cv2.imread() method
image = cv2.imread(path, cv2.IMREAD_UNCHANGED)

# Displaying the image
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destoryAllWindows()

输出结果

cv2.IMREAD_UNCHANGED image

你可以从输出中看到,图像没有变化。

结论

当读取一个彩色图像文件时,OpenCV imread()读取的是一个Numpy数组ndarray的行(高)x列(宽)x色(3)。颜色的顺序是BGR(蓝、绿、红)。

请注意,这里要注意的一点是,OpenCV是BGR,而Pillow是RGB。

这就是Python cv2 imread()方法的内容了。