首页 > 编程笔记 > Python笔记 阅读:68

OpenCV cvtColor()函数的用法(附带实例)

生活中看到的大多数彩色图片都是 RGB 类型的,但是在进行图像处理时需要用到灰度图、二值图、HSV(六角锥体模型,这个模型中颜色的参数分别是色调 H、饱和度 S、明度 V)、HSI 等颜色制式,对此 OpenCV 提供了 cvtColor() 函数来实现这些功能。

cvtColor() 函数用来进行颜色空间的转换。随着 OpenCV 版本的升级,对于颜色空间种类的支持也越来越多,涉及不同颜色空间之间的转换,比如 RGB 和灰度的互转、RGB 和 HSV 的互转等。

cvtColor() 函数声明如下:
cvtColor(src, code[, dst[, dstCn]]) -> dst

函数 cvtColor() 的作用是将一个图像从一个颜色空间转换到另一个颜色空间,但是当从 RGB 向其他类型转换时,必须明确指出图像的颜色通道。在 OpenCV 中,默认的颜色制式排列是 BGR 而非 RGB。因此,对于 24 位颜色图像来说,前 8 位是蓝色,中间 8 位是绿色,最后 8 位是红色。

需要注意的是,cvtColor() 函数不能直接将 RGB 图像转换为二值图像,需要借助 threshold() 函数。另外,如果对 8 位图像使用 cvtColor() 函数进行转换,将会丢失一些信息。

我们常用的颜色空间转换有两种:BGR 转为灰度图和 BGR 转为 HSV。下面来看一个例子,将图像转换为灰度图和 HSV。

【实例】将图片转换为灰度图和 HSV。
import cv2

#将图片转换为灰度图
src_image = cv2.imread("test.jpg")
gray_image = cv2.cvtColor(src_image, cv2.COLOR_BGR2GRAY)
#将图片转换为HSV
hsv_image = cv2.cvtColor(src_image, cv2.COLOR_BGR2HSV)
cv2.imshow("src_image", src_image)
cv2.imshow("gray_image", gray_image)
cv2.imshow("hsv_image", hsv_image)
cv2.waitKey(0)
首先读取工程目录下的图片 test.jpg,然后调用 cvtColor() 函数将原图转为灰度图,再调用 cvtColor() 函数将原图转为 HSV 图,最后将 3 幅图片显示出来。

运行工程,结果如下图所示:

相关文章