?OpenCV——函数
函数cv2.imread()读取图片
opencv读取图片的函数是?cv2.imread 。 此函数采用以下参数:
- 要读取/加载的图像的文件名
- 用于指定我们要以哪种模式读取图像的标志
如果我们尝试加载不存在的图像,该函数将返回无(None )。这可以用来检查图像是否被成功读取。目前,OpenCV 支持?.bmp ,.jpeg ,.jpg ,.png ,.tiff ?和?.tif ?等格式的图像。详细的列表可以:参考官方文档https://docs.opencv.org/4.2.0/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56。
通常,只有三个标志用于在指定模式下读取图像:
- cv2.IMREAD_UNCHANGED:照原样读取图像。这意味着,如果图像是具有透明背景的 PNG 图像,则它将被读取为 BGRA 图像,其中?
A ?指定?Alpha ?通道:负责透明度。 如果不使用此标志,则该图像将作为?BGR ?图像读取。请注意,BGR ?是指图像的蓝色,绿色和红色通道。A (或?Alpha ?通道)负责透明度。这就是为什么具有透明背景的图像将被读取为?BGRA ?而不是?BGR 。 同样需要注意的是,默认情况下,OpenCV 使用?BGR ?模式,这就是我们在这里讨论?BGRA ?模式而不是?RGBA ?模式的原因。 - cv2.IMREAD_GRAYSCALE:以灰度格式读取图像,这会将任何彩色图像转换为灰度图像。
- cv2.IMREAD_COLOR:默认标志,它将任何图像读取为彩色图像(
BGR ?模式)。
OpenCV 以?BGR ?模式而不是?RGB ?模式读取图像。这意味着通道的顺序变为蓝色,绿色和红色。 即使我们将使用其他 OpenCV 函数,也假定图像处于?BGR ?模式
?函数cv2.cvtColor()修改图像
当场景需要以下任务的操作时:
- 转换图像的色彩空间
- 将图像分成多个通道
- 合并通道以形成图像
可以用转换图像的色彩空间?cv2.cvtColor ?函数,此函数有两个输入元素:
- 要转换的图像
- 颜色转换标志,如下所示:?
cv2.COLOR_{CURRENT_COLOR_SPACE}2{NEW_COLOR_SPACE}
例如,要将?BGR ?图像转换为?HSV ?图像,将使用?cv2.COLOR_BGR2HSV 。 要将?BGR ?图像转换为?灰度 ?图像,将使用:cv2.COLOR_BGR2GRAY ,依此类推。详细的列表可以:参考官方文档https://docs.opencv.org/4.2.0/d8/d01/group__imgproc__color__conversions.html
拆分和合并渠道。假设您只想修改图像的红色通道,您可以先拆分三个通道(蓝色,绿色和红色),修改红色通道,然后再次合并三个通道。让我们看看如何使用 OpenCV 函数拆分和合并通道:
- 分割通道,可以使用?
cv2.split ?函数。 它仅需一个参数:要分割的图像,并返回三个通道的列表:蓝色,绿色和红色。 - 合并通道,可以使用?
cv2.merge ?函数。 它仅接受一个参数:一个由三个通道(蓝色,绿色和红色)组成的集合,并返回合并的图像。
?函数cv2.imshow()显示图片
使用三个主要函数来进行显示:
- 显示图像,使用?
cv2.imshow ?函数。它有两个参数。第一个参数是一个字符串,它是我们将在其中显示图像的窗口的名称。第二个参数是我们要显示的图像。 - 保持时间,调用?
cv2.imshow ?函数后,我们使用?cv2.waitKey ?函数。此函数指定控件应在窗口上停留多长时间。如果要在用户按下任意键后,才执行下一段代码,则可以提供?0 。否则,可以提供一个数字,该数字指定程序在移至下一段代码之前将等待的毫秒数。例如,如果要等待?10 ?毫秒才能执行下一段代码,则可以使用cv2.waitKey(10) 。 - 关闭窗口,如果不调用?
cv2.waitKey ?函数,则窗口将无法正确显示。但是,运行下一个代码后,该窗口仍将保持打开状态,要关闭所有显示窗口,我们可以使用?cv2.destroyAllWindows() ?函数。它不带任何参数。建议不再使用显示窗口时将其关闭。
?
函数cv2.imwrite()保存图像函数
使用 OpenCV 的?cv2.imwrite ?函数保存图像。它有两个参数:
- 一个字符串,指定我们要用于保存图像的文件名
- 我们要保存的图像
|