机器视觉学习-day02-灰度化实验

彩色图是由RGB三个通道组成,灰度图只有一个通道,也成为单通道图像,所以彩色图转换为灰度图的过程本质就是将RGB三通道合并成一个通道的过程。

灰度化实验的三种方法:最大值法、平均值法、加权平均值法

1 最大值法

最大值法就是从三个通道的值中选择最大值作为灰度后的数值,因此最大值法生成的灰度图会偏亮,适合给较暗的图像使用。

原图名1.png

import cv2  # OpenCV库,用于图像处理
import numpy as np  # NumPy库,用于数值计算和数组操作

if __name__ == '__main__':
    # 1. 图片输入
    path = '1.jpg'  # 定义图片路径
    image_np = cv2.imread(path)  # 使用OpenCV读取图片
    """
       cv2.imread()函数:
       - 参数:图片路径
       - 返回值:NumPy数组,包含图像的像素数据
       - 格式:BGR顺序(不是常见的RGB顺序)
       - 形状:(高度, 宽度, 通道数)
    """
    image_shape = image_np.shape  # 获取图像的形状(尺寸信息)
    print(image_shape)  # (512, 512, 3)
    # 打印图像尺寸(例如(512, 512, 3)表示高512像素,宽512像素,3个颜色通道)

    # 2. 创建存储灰度图的数组
    # 创建一个全黑的图像数组,尺寸与原图相同,3个通道,数据类型为无符号8位整数(0-255)
    image_np_gray = np.zeros((image_shape[0], image_shape[1], 3), dtype=np.uint8)
    """
      np.zeros()函数:
      - 参数1:数组形状 (高度, 宽度, 通道数)
      - 参数2:数据类型(uint8表示0-255的整数)
      - 效果:创建一个全0(黑色)的图像数组
    """
    # 3. 使用最大值法进行灰度化
    # 遍历全局像素
    """image_shape==(512, 512, 3)"""
    for i in range(image_shape[0]):  # 遍历每一行(高度方向)
        for j in range(image_shape[1]):  # 遍历每一列(宽度方向)

            # 获取当前像素的BGR值
            b, g, r = image_np[i, j]  # 解包为三个变量
            """
            图像像素访问:
            - image_np[i, j] 返回一个包含三个值的数组 [B, G, R]
            - Python的元组解包:b, g, r = [B, G, R] 分别赋值
            """
            # 最大值法:取三个通道中的最大值作为灰度值
            max_val = max(b, g, r)  # 使用Python内置的max函数
            """
            最大值法原理:
            - 对于每个像素,取它的B、G、R三个通道中的最大值
            - 这
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值