RBG转灰度图

RBG转灰度图,要求储存为png格式

import cv2
import os
def main(path,topath):
    # print(path)
    folders = os.listdir(path)
    # print(folders)
    for idx,pic in enumerate(folders):
        # print(path  + '{}'.format(pic))
        input_image = cv2.imread(path+'/'+'{}'.format(pic),1)
        print(pic,input_image.shape)

        image = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)
        # cv2.imshow("image", image)  # 显示图片,后面会讲解
        # cv2.waitKey(0)  # 等待按键
        # print(topath,pic.replace('.jpg','.png'))
        cv2.imwrite(topath+pic.replace('.jpg','.png'), image)
if __name__ == '__main__':
    path = r'./pic/'
    topath = r'./grey/'
    main(path,topath)


### 将RGB图像换为灰度图的实现 将RGB图像换为灰度图是一种常见的图像预处理操作,其目的是降低数据维度并简化后续处理流程。以下是基于MATLAB的一种具体实现方式: #### MATLAB代码示例 ```matlab % 加载原始RGB图像 img = imread('example.jpg'); % 使用内置函数rgb2gray()进行灰度化 img_gray = rgb2gray(img); % 显示原图与灰度化后的图像对比 figure; subplot(1, 2, 1); imshow(img); title('原始RGB图像'); subplot(1, 2, 2); imshow(img_gray); title('灰度化图像'); ``` 上述代码利用了MATLAB自带的`rgb2gray()`函数完成从RGB灰度图换过程[^1]。 如果需要手动定义灰度化的计算逻辑,则可以按照加权平均法来实现: ```matlab % 手动实现灰度化 R = double(img(:, :, 1)); % 提取红色通道 G = double(img(:, :, 2)); % 提取绿色通道 B = double(img(:, :, 3)); % 提取蓝色通道 % 计算灰度值 (Y = 0.2989 * R + 0.5870 * G + 0.1140 * B) img_gray_manual = uint8(0.2989 * R + 0.5870 * G + 0.1140 * B); % 展示结果 figure; imshow(img_gray_manual); title('手动灰度化图像'); ``` 此方法依据人类视觉系统的敏感特性分配权重系数,其中绿色占比最高,因为人眼对绿光最为敏感。 --- #### 数学原理说明 在数字图像处理领域,RGB色彩空间由红(Red)、绿(Green)、蓝(Blue)三个分量组成,每一分量通常占据一个字节的空间范围(即0~255)。为了将三维颜色信息压缩至单维灰度值,需引入一种映射关系。最常用的线性变换公式如下: \[ Y = 0.2989 \cdot R + 0.5870 \cdot G + 0.1140 \cdot B \] 该公式的推导源于CIE标准亮度感知模型的研究成果[^2]。 --- #### 应用场景扩展 除了简单的灰度化外,在实际项目中还可能涉及更复杂的图像增强技术。例如,对于夜间拍摄的照片,可以通过滤波器去除背景噪声;或者针对特定目标区域执行分割操作以便进一步分析[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值