OpenCV--图像转化为灰度图、HSV图

OpenCV–图像转化为灰度图、HSV图

一、灰度图

以下介绍转载自:https://www.cnblogs.com/xiejiulong/p/3821620.html

图像灰度值的概念是什么?

  灰度也可以认为是亮度,简单说就是色彩的深浅程度。实际上在我们的日常生活中,通过三原色色彩深浅的组合,可以组成各种不同的颜色。产品能够展现的灰度数量越多,也就意味着色彩表现力更加丰富,能够实现更强的色彩层次。例如三原色16级灰度,能显示的颜色就是16*16*16=4096色。不过目前产品256级灰度已经非常地普遍了。
  所谓颜色或灰度级指黑白显示器中显示像素点的亮暗差别,在彩色显示器中表现为颜色的不同,灰度级越多,图像层次越清楚逼真。灰度级取决于每个像素对应的刷新存储单元的位数和显示器本身的性能。如每个像素的颜色用16位二进制表现,我们就叫它16位图,它可以表达2的16次方即65536种颜色。如每个像素用24位二进制表示,我们就叫它24位图,它可以表达2的24次方即16777216种颜色。
  灰度就是没有色彩,RGB色彩分量全部相等。如果一个二值灰度图像,它的像素值只能为0或1,我们说它的灰度级为2。用个例子来说吧:一个256级灰度图你,RGB(100,100,100)就代表灰度为100,RGB(50,50,50)就代表灰度为50。
  灰度是指黑白图像中的颜色深度,范围一般0-255,白色为255,黑色为0,故黑白图片也称为灰度图像。若是彩色图像的灰度其实是在转化为黑白图像后的像素值(是一种广义的提法),转化的方法看应用领域而定,一般按加权的方法转换,R,G,B的一般比例为3: 6:1。
  任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
    1.浮点算法:Gray = R*0.3 + G*0.59 + B*0.11
    2.整数方法:Gray = (R*30+G*59+B*11)/100
    3.移位方法:Gray = (R*28+G*151+B*77)>> 8
    4.平均值法:Gray = (R+G+B)/3
    5.仅取绿色:Gray = G
  通过以上任何一种方法求得Gray后,将原来的RGB(r,g,b)中的r,g,b统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(r,g,b)就是灰度图了。

在将彩色图片转化为灰度图时,通常有两种方法即读取图片时将其读取为灰度图,或者通过cvtColor函数进行转换,这两种方式读取的灰度图的级数是相同的。

代码演示:

import cv2 as cv
import numpy as np
img_cat_gray = cv.imread("./img/cat.jpg", 0)
img_cat_color = cv.imread("./img/cat.jpg")
print("img_cat_gray: ", img_cat_gray.shape)
print("img_cat_color: ", img_cat_color.shape)

img_cat_gray: (414, 500)
img_cat_color: (414, 500, 3)

#或者通过cvtColor将彩色图转换为 灰度图
img_cvt_cat = cv.cvtColor(img_cat_color, cv.COLOR_BGR2GRAY)
img_cvt_cat.shape

(414, 500)

print(img_cat_gray == img_cvt_cat)

[[ True True True … True True True]
[ True True True … True True True]
[ True True True … True True True]

[ True True True … True True True]
[ True True True … True True True]
[ True True True … True True True]]

cv.imshow("cat_cvt_gray", img_cvt_cat)
cv.imshow("cat_read_gray", img_cat_gray)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

二、HSV

参考百度百科:https://baike.baidu.com/item/HSV/547122?fr=aladdin

  • H-色调(主波长):色调是指图像的相对明暗程度,在彩色图像上表现为颜色。
  • S-饱和度(纯度/颜色的阴影):饱和度是指色彩的鲜艳程度,也称色彩的纯度。
  • V值(强度):就是每个通道的图像的像素灰度值。

代码演示:

img_cat_hsv = cv.cvtColor(img_cat_color, cv.COLOR_BGR2HSV)
cv.imshow("hsv", img_cat_hsv)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

img_cat_color.shape

(414, 500, 3)

  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值