码迷,mamicode.com
首页 > 其他好文 > 详细

图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)

时间:2019-07-15 10:41:18      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:tco   ram   范围   break   img   图像分割   ESS   upper   oca   

一 图片的色彩空间转换

  • 灰度色彩空间

  单通道,取值范围[0,255] 0黑255白

  • RGB色彩空间(opencv中习惯用BGR)

  opencv中R,G,B三通道取值范围均为[0,255]。

 技术图片

  • HSV/HSL色彩空间

     H:0-180  S: 0-255 V: 0-255

  HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。
技术图片

 

1 代码

import cv2 as cv

#色彩空间的转换
def color_space_demo(image):
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    cv.imshow(gray,gray)
    hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
    cv.imshow(hsv,hsv)
    yuv=cv.cvtColor(image,cv.COLOR_BGR2YUV)
    cv.imshow(hsv,yuv)

src=cv.imread(./yiner.jpg)
cv.namedWindow(before,cv.WINDOW_NORMAL)
cv.imshow(before,src)

color_space_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

 

 

技术图片

 

二:色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色

代码

#色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪颜色
import cv2 as cv
import numpy as np

def catch_pen():
    capture=cv.VideoCapture(./1.mp4)#导入文件

    while True:
        ret,frame=capture.read()
        if ret==False:
            break
        #色彩空间转换到HSV
        hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        # 设置黑色的范围,跟踪视频中的黑色
        lower_hsv=np.array([0,0,0]) #设置过滤的颜色的低值
        upper_hsv=np.array([180,255,46])#设置过滤的颜色的高值
        # 调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择黑色区域
        mask=cv.inRange(hsv,lower_hsv,upper_hsv)
        cv.imshow(video,frame)
        cv.imshow(mask,mask)
        if cv.waitKey(50)&0xFF==ord(q):
            break

catch_pen()
cv.waitKey()
cv.destroyAllWindows()

 

HSV  lower_hsv和uppe_hsv查询表

技术图片

 

三 通道分离、合并,修改某一通道

通道分离:split() 将彩色图像分割为3个通道

合并:merge()

import cv2 as cv
import numpy as np

src=cv.imread(hua.jpg)
cv.namedWindow(before,cv.WINDOW_NORMAL)
cv.imshow(before,src)

#通道分离
b,g,r=cv.split(src)
cv.imshow(blue,b)
cv.imshow(green,g)
cv.imshow(red,r)

#通道合并
src=cv.merge([b,g,r])
cv.imshow(merge,src)

# 修改某个通道
src[:,:,2]=100
cv.imshow(single,src)

cv.waitKey(0)
cv.destroyAllWindows()

 

效果展示

技术图片

图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)

标签:tco   ram   范围   break   img   图像分割   ESS   upper   oca   

原文地址:https://www.cnblogs.com/angle6-liu/p/10651757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!