美文网首页
图像的色彩空间

图像的色彩空间

作者: 她和她的喵真好看 | 来源:发表于2018-11-12 13:12 被阅读0次

    基础要点

    这里主要讲了图像色彩空间的处理和色彩空间的基础知识

    什么是色彩空间

    人们建立了多种的色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间

    常见的色彩空间有哪些

    常见的色彩空间有:RGB、HSV、HSI、YCrCb、YUV

    RGB

    HSV

    称六角锥体模型,是根据颜色的直观特性创建的一种颜色空间,这个颜色空间是本节课讲解的一个重点。

    HSI

    是从人的视觉系统出发,用色调( Hue )、色饱和 度( Saturation 或 Chroma )和亮度( Intensity 或 Brightness )来描述颜色。 HSI 颜色空间可以用一个圆 锥空间模型来描述

    YCrCb

    主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视,这个可以用来检测皮肤和检测人脸

    YUV

    是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。

    应用

    标记图像中的特定颜色

    一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是网友通过实验计算的模糊范围(准确的范围在网上都没有给出)。

    H: 0 — 180

    S: 0 — 255

    V: 0 — 255

    以下是不同颜色的HSV最大最小的范围:


    image.png

    代码实现

    import cv2 as cv
    import numpy as np
    def access_fixel(img):
        '''访问图像的所有元素'''
        print(img.shape)
        # 获取图像的高度 图像的高度为shape的第一个值(维度)
        height = img.shape[0]
        # 获取图像的宽度 图像的宽度为shape的第二个值(维度)
        weight = img.shape[1]
        # 获取图像的通道数量 图像的通道数量为shape的第三个值(维度)
        channels = img.shape[2]
        for row in range(height):
            for col in range(weight):
                for c in range(channels):
                    pv = img[row,col,c]
                    img[row,col,c]=255-pv
        cv.imshow("access_fixel ", img)
    img = cv.imread("/Users/reon/Code/Python/OpenCv/durrells.jpg")
    cv.namedWindow("input ")
    cv.imshow("input ",img)
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    cv.imshow("gray ",gray)
    hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
    cv.imshow("hsv ",hsv)
    yuv = cv.cvtColor(img,cv.COLOR_BGR2YUV)
    cv.imshow("yuv ",yuv)
    luv = cv.cvtColor(img,cv.COLOR_BGR2LUV)
    cv.imshow("luv",luv)
    # 再hsv的基础上,将图片的黑色部分以白色显示,其他颜色以黑色显示
    # h_min_hsv = np.array([0,0,0])
    # h_max_hsv = np.array([180,255,46])
    # 再hsv的基础上,将图片的红色部分以白色显示,其他颜色以黑色显示
    h_min_hsv = np.array([0,43,46])
    h_max_hsv = np.array([10,255,255])
    # 颜色标注OpenCV 提供了一个方法,inRange()
    # 该方法提供三个参数,
    # 第一个参数是图像色彩空间即hsv值,
    # 第二个参数是hsv的最小查找范围,
    # 第三个参数是hsv的最大查找范围。
    
    mask = cv.inRange(hsv,h_min_hsv,h_max_hsv)
    cv.imshow("mask ",mask )
    cv.waitKey(0)
    

    相关文章

      网友评论

          本文标题:图像的色彩空间

          本文链接:https://www.haomeiwen.com/subject/weoqfqtx.html