OpenCV基础入门30讲(Python)——第二讲 图像色彩转换

常见的几种颜色类型介绍

1、彩色图像(Color Image,BGR)

  • 数据类型uint8
  • 通道数:3(BGR:蓝色、绿色、红色)
  • 描述:彩色图像有三个通道,每个通道的值范围是 0 到 255,分别表示蓝色(B)、绿色(G)、红色(R)分量的强度。需要注意的是,OpenCV 默认采用 BGR 通道顺序,而不是常见的 RGB。
  • 用途:适用于大多数场景下的彩色图像处理,如物体检测、图像分割等。

2、灰度图像(Grayscale Image)

  • 数据类型uint8(无符号 8 位整数)
  • 通道数:1
  • 描述:灰度图像只有一个通道,每个像素点的值范围为 0 到 255,0 表示黑色,255 表示白色,中间值表示不同的灰度。
  • 用途:用于简化计算,尤其在图像处理和计算机视觉任务中,灰度图像常被用于边缘检测、阈值处理等。

3、HSV图像

  • H(Hue,色调)
    • 范围:0 到 179(在 OpenCV 中)
    • 描述:表示颜色的基本属性,如红色、蓝色、绿色等。0 表示红色,60 表示黄色,120 表示绿色,180 表示蓝色。
  • S(Saturation,饱和度)
    • 范围:0 到 255
    • 描述:表示颜色的纯度。0 表示灰色(无色彩),255 表示最饱和的颜色。
  • V(Value,明度/亮度)
    • 范围:0 到 255
    • 描述:表示颜色的亮度。0 表示完全黑色,255 表示最亮的颜色。

代码讲解

在上一讲的main文件中加入以下代码:

# 第二节课 图像色彩转换
def color_space_demo():
    image = cv.imread('C:/Users/28267/Desktop/Python/Py_OpenCV481/python_opencv_quick_tutorial/image/3.jpg')
    if image is None:
        print("错误: 未发现图像或者图像不能被加载.")
# 缩放图像 由于我要显示的图像太大了,所以接下来四行我进行了一下缩放
    # 将 image 图像的宽*0.2,得到新的宽度
    width = int(image.shape[1] * 0.2)
    # 将 image 图像的高*0.2,得到新的高度
    height = int(image.shape[0] * 0.2)
    # 设置宽高比
    dim = (width, height)

    # 缩小图像 调用 OpenCV 中的 resize 函数缩小图像
    # 参数1:要缩小的图像,参数2:缩小后的图像宽高,参数3:插值方法,默认为INTER_LINEAR
    resized_image = cv.resize(image, dim, interpolation=cv.INTER_AREA)
    # 用 cvtColor 函数,把 resized_image 指向的图像颜色 从 BGR 转换为灰度图像
    # 我们通常说RGB 但是在OpenCV中读取图像的顺序是蓝色,绿色,红色,所以叫BGR
    gray = cv.cvtColor(resized_image, cv.COLOR_BGR2GRAY)
    # 用 cvtColor 函数,把 resized_image 指向的图像颜色从 BGR 转换为HSV图像
    hsv = cv.cvtColor(resized_image, cv.COLOR_BGR2HSV)

    # 显示最开始读取的原图像
    cv.imshow("resized_image", resized_image)
    # 显示灰度图像   gray:灰色
    cv.imshow("gray_image", gray)
    # 显示HSV图像
    cv.imshow("hsv_image", hsv)
    cv.waitKey(0)
    cv.destroyAllWindows()

将主函数部分更改为: 

# 主函数运行函数 color_space_demo
if __name__ == "__main__":
    color_space_demo()

main文件代码,布局:

运行效果图:

特别介绍

以后只需要在main文件中加入我们要写的函数,例如:

# 第二节课 色彩空间转换
def color_space_demo():
    image = cv.imread('C:/Users/28267/Desktop/Python/Py_OpenCV481/python_opencv_quick_tutorial/image/3.jpg')
    if image is None:
        print("错误: 未发现图像或者图像不能被加载.")
# 缩放图像 由于我要显示的图像太大了,所以接下来四行我进行了一下缩放
    # 将 image 图像的宽*0.2,得到新的宽度
    width = int(image.shape[1] * 0.2)
    # 将 image 图像的高*0.2,得到新的高度
    height = int(image.shape[0] * 0.2)
    # 设置宽高比
    dim = (width, height)

    # 缩小图像 调用 OpenCV 中的 resize 函数缩小图像
    # 参数1:要缩小的图像,参数2:缩小后的图像宽高,参数3:插值方法,默认为INTER_LINEAR
    resized_image = cv.resize(image, dim, interpolation=cv.INTER_AREA)
    # 用 cvtColor 函数,把 resized_image 指向的图像颜色 从 BGR 转换为灰度图像
    # 我们通常说RGB 但是在OpenCV中读取图像的顺序是蓝色,绿色,红色,所以叫BGR
    gray = cv.cvtColor(resized_image, cv.COLOR_BGR2GRAY)
    # 用 cvtColor 函数,把 resized_image 指向的图像颜色从 BGR 转换为HSV图像
    hsv = cv.cvtColor(resized_image, cv.COLOR_BGR2HSV)

    # 显示最开始读取的原图像
    cv.imshow("resized_image", resized_image)
    # 显示灰度图像   gray:灰色
    cv.imshow("gray_image", gray)
    # 显示HSV图像
    cv.imshow("hsv_image", hsv)
    cv.waitKey(0)
    cv.destroyAllWindows()

再把主函数部分改成我们新写的函数名,例如

# 主函数运行函数 color_space_demo
if __name__ == "__main__":
    color_space_demo()

即可运行我们新写的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值