【Python3-OpenCV】实现色彩转换

398 阅读2分钟

这是我参与更文挑战的第10天,活动详情查看: 更文挑战

OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。

image.png

本文将介绍如何在Python3中使用OpenCV实现色彩转换:

前文

Opencv中有数百种关于在不同色彩空间之间转换的方法。

当前计算机视觉中有三种常用的色彩空间:灰度BGR、以及HSV

但是,经常用的也就两种,即BGR<–>GrayBGR <–>HSV

灰度、BGR、HSV

灰度色彩空间是通过去除彩色信息来将其转换为灰阶,灰度色彩空间对中间处理特别有效,比如:人脸检测

BGR,即蓝绿红色彩空间,每一个像素点都由一个三元数组来表示,分别代表蓝绿红三种颜色。与之相似的颜色空间BGR,它们只是再颜色的顺序上有所不同

HSV:H(Hue)是色调,范围为[0,179]S(Saturation)是饱和度,[0,255]V(Value)表示黑暗的程度,范围为[0,255]

色彩转换

对于色彩转换,我们使用函数cv2.cvtColor(input_image, flag)实现,flag就是转换类型。

下面用代码实现色彩空间的转换。

import cv2
import numpy as np

# 颜色空间转换,从bgr到gray,hsv,yuv,ycrcb
def color_space_demo(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    cv2.imshow("gray", gray)

    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    cv2.imshow("hsv", hsv)

    yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
    cv2.imshow("yuv", yuv)

    ycrcb = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)
    cv2.imshow("ycrcb", ycrcb)

if __name__ == '__main__':

    src = cv2.imread("E:\\demo\\lena.jpg")  # 读入图片放进src中
    cv2.namedWindow("lena", cv2.WINDOW_AUTOSIZE)  # 创建窗口, 窗口尺寸自动调整
    cv2.imshow("lena", src)  # 将src图片放入该创建的窗口中
    color_space_demo(src)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

输出为:

原图

image.png

gray图

image.png

hsv图

image.png

ycrcb图

image.png

yuv图

image.png

本月将陆续推出相关系列文章,

篇篇精彩,尽请关注。