当前位置:   article > 正文

python之彩色图像变灰度图像_python将图像变为灰度图方法

python将图像变为灰度图方法

目录

1、加权平均法:

2、最大值法:

3、分量法:

4、平均值法:


彩色图像转换为灰度图像的过程涉及到图像处理的基本概念和方法。这种转换是通过对彩色图像的三个通道(红、绿、蓝,即RGB)进行特定的计算,从而得到一个代表亮度信息的单通道灰度图像。以下是几种常见的转换方法:

1、加权平均法:

这是最常用的彩色图像灰度化处理方法。原理是将三个分量以不同的权值进行加权平均。公式为:Gray = 0.299R + 0.587G + 0.114B。这个公式考虑了人眼对不同颜色的敏感度,其中绿色对亮度的贡献最大,红色次之,蓝色最少。

  1. import cv2
  2. # 读取彩色图像
  3. img = cv2.imread('color_image.jpg')
  4. # 将彩色图像转换为灰度图像
  5. gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  6. # 显示灰度图像
  7. cv2.imshow('Gray Image', gray_img)
  8. cv2.waitKey(0)
  9. cv2.destroyAllWindows()

  1. import numpy as np
  2. # 读取彩色图像
  3. img = np.array(cv2.imread('color_image.jpg'))
  4. # 获取图像的高度、宽度和通道数
  5. height, width, channels = img.shape
  6. # 计算加权平均值作为灰度值
  7. gray_img = (0.299 * img[:, :, 0] + 0.587 * img[:, :, 1] + 0.114 * img[:, :, 2]) / (0.299 + 0.587 + 0.114)
  8. # 将灰度值限制在0-255范围内
  9. gray_img = np.clip(gray_img, 0, 255)
  10. # 将灰度值转换为整数
  11. gray_img = gray_img.astype(np.uint8)
  12. # 显示灰度图像
  13. cv2.imshow('Gray Image', gray_img)
  14. cv2.waitKey(0)
  15. cv2.destroyAllWindows()

2、最大值法:

将彩色图像中的三个分量R、G、B的最大值作为灰度图的灰度值。即:Gray = max(R,G,B)。这种方法简单,但可能会丢失一些细节信息。

  1. import cv2
  2. import numpy as np
  3. # 读取彩色图像
  4. img = cv2.imread('color_image.jpg')
  5. # 获取图像的高度、宽度和通道数
  6. height, width, channels = img.shape
  7. # 创建一个空的灰度图像
  8. gray_img = np.zeros((height, width), dtype=np.uint8)
  9. # 遍历图像的每个像素
  10. for i in range(height):
  11. for j in range(width):
  12. # 获取当前像素的RGB值
  13. r, g, b = img[i, j]
  14. # 使用最大值法计算灰度值
  15. gray_value = max(r, g, b)
  16. # 将灰度值赋给灰度图像的当前像素
  17. gray_img[i, j] = gray_value
  18. # 显示灰度图像
  19. cv2.imshow('Gray Image', gray_img)
  20. cv2.waitKey(0)
  21. cv2.destroyAllWindows()

3、分量法:

将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。例如,可以直接使用R、G或B通道的值作为灰度值。

  1. import cv2
  2. # 读取彩色图像
  3. img = cv2.imread('color_image.jpg')
  4. # 获取图像的高度、宽度和通道数
  5. height, width, channels = img.shape
  6. # 选择一个通道作为灰度值,这里选择B通道
  7. gray_img = img[:, :, 0]
  8. # 显示灰度图像
  9. cv2.imshow('Gray Image', gray_img)
  10. cv2.waitKey(0)
  11. cv2.destroyAllWindows()

4、平均值法:

将彩色图像中的三分量的亮度求平均得到一个灰度值。公式为:Gray = (R + G + B) / 3。这种方法简单直观,但可能不如加权平均法效果好。

  1. import cv2
  2. # 读取彩色图像
  3. img = cv2.imread('color_image.jpg')
  4. # 获取图像的高度、宽度和通道数
  5. height, width, channels = img.shape
  6. # 计算R、G、B三个通道的平均值作为灰度值
  7. gray_img = cv2.mean(img)
  8. # 显示灰度图像
  9. cv2.imshow('Gray Image', gray_img)
  10. cv2.waitKey(0)
  11. cv2.destroyAllWindows()

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/854246
推荐阅读
相关标签
  

闽ICP备14008679号