(一)彩色图片(RGB)转灰度图片

彩色图片(RGB)转灰度图片

一、知识简介

RGB彩色图像在计算机中是使用R、G、B三个矩阵来存储红、绿、蓝三个颜色值。灰度图则是采用一个矩阵来存储灰度值(亮度,灰度值0表示亮度为0,看起来是黑色,同理灰度值1表示最亮,看起来是白色)

二、彩色图片(RGB)转灰度图片原理

对于彩色转灰度,有一个很著名的心理学公式:

Gray = R * 0.299 + G * 0.587 + B * 0.114
其中权值可以根据实际应用进行修改

三、python实现

要点:图片计算格式 如果是浮点型 像素点的取值范围(0,1),创建画布的时候矩阵的类型就是float型
图片计算格式 如果是整型(uint8) 像素点的取值范围(0,255),创建画布的时候矩阵的类型就是uint8型

import cv2
import numpy as np

img = cv2.imread('image0.jpg',1)

def RGB2Gray1(img):
    '''
    :param img: RGB 图
    :return: 灰度图(0,1)
    方法一:
    对于彩色转灰度,有一个很著名的心理学公式:
    Gray = B*0.114 + G*0.587 + R*0.299
    '''
    imgInfo = img.shape
    gray = np.zeros((imgInfo[0], imgInfo[1]))  # gray.dtype 为 float64
    for i in range(imgInfo[0]):
        for j in range(imgInfo[1]):
            gray[i][j] = (img[i][j][0]*0.114 + img[i][j][1]*0.587 + img[i][j][2]*0.299)/255
    cv2.imshow('image2gray', gray)
    cv2.waitKey(0)


# RGB2Gray1(img)

def RGB2Gray2(img):
    '''
    :param img: RGB 图
    :return: 灰度图(0,255)
    方法一:
    对于彩色转灰度,有一个很著名的心理学公式:
    Gray = B*0.114 + G*0.587 + R*0.299
    '''
    imgInfo = img.shape
    gray = np.zeros((imgInfo[0], imgInfo[1]),dtype=np.uint8)  # gray.dtype 为 uint8  # 创建矩阵来保存变换后的图片
    gray.astype(int)
    for i in range(imgInfo[0]):
        for j in range(imgInfo[1]):
            gray[i][j] = img[i][j][0]*0.114 + img[i][j][1]*0.587 + img[i][j][2]*0.299
    # print(gray)
    cv2.imshow('image2gray', gray)
    cv2.waitKey(0)

# RGB2Gray2(img)

def RGB2Gray3(img):
    '''
    :param img: RGB 图
    :return: 灰度图(0,255)
    方法一:
    对于彩色转灰度,有一个很著名的心理学公式:
    Gray = B*0.114 + G*0.587 + R*0.299
    而实际应用时,希望避免低速的浮点运算,所以需要整数算法。注意到系数都是 3 位精度的没有,我们可以将它们缩放 1000 倍来实现整数运算算法:
    '''
    imgInfo = img.shape
    gray = np.zeros((imgInfo[0], imgInfo[1]),dtype=np.uint8)  # gray.dtype 为 uint8
    gray.astype(int)
    for i in range(imgInfo[0]):
        for j in range(imgInfo[1]):
            gray[i][j] = (img[i][j][0]*114 + img[i][j][1]*587 + img[i][j][2]*299)/1000
    # print(gray)
    cv2.imshow('image2gray', gray)
    cv2.waitKey(0)
RGB2Gray3(img)
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值