当前位置:   article > 正文

Python-彩色图像的灰度化_python 灰度图 rgb255

python 灰度图 rgb255

效果

img_gray

理论部分

  • 灰度:表示图像像素明暗程度的数值,也就是黑白图像中点的颜色深度。范围一般为0-255。白色为255,黑色为0。
  • 通道:把图像分解成一个或多个颜色成分:
    • 单通道:一个像素点只需一个数值表示,只能表示灰度,0为黑色
    • 三通道:把图像分为红绿蓝三个通道,可以表示彩色(RGB模式)
    • 四通道:在RGB基础上加上alpha(透明度)通道,alpha=0表示全透明
  • RGB转化为Gray
    • 浮点算法:Gray = R0.3 +G0.59 + B0.11
    • 整数算法:Gray = (R30 + G59 + B11) / 100
  • 将RGB值转化为[0,1]浮点数:x/255即可

代码部分

  • 使用库
    • opencv:安装使用pip install opencv-python,使用时用 import cv2
    • matplotlib:安装使用pip install matplotlib,使用时用 import matplotlib.pyplot as plt
    • skimage:安装使用pip install scikit-image,使用时用 import skimage
"""
@author: Hanley-Yang

彩色图像的灰度化
"""
from skimage.color import rgb2gray
import numpy as np
import matplotlib.pyplot as plt
import cv2

#读取原图片,创建空白单通道图片
img = cv2.imread("shangri-la.jpg")
h,w,c = img.shape[:3]   #获取图片的high,wide和channel
img_gray = np.zeros([h,w],img.dtype) #创建一张和当前图片大小一样的单通道图片

#二维循环,取出当前high和wide中的RGB坐标
for i in range(h):
    for j in range(w):
        m = img[i,j]
        img_gray[i,j] = int(m[0]*0.11 + m[1]*0.59 + m[2]*0.3)

#输出原始图片像素参数
print("---image shangri-la---")
#输出灰度化图片像素参数
print(m)
print("---image gray----")
print(img_gray)
print("image show gray: %s"%img_gray)
cv2.imshow("image show gray",img_gray)

#显示原始图片在画布上方
img = plt.imread("shangri-la.jpg")
plt.subplot(211) #高2宽1的画布,图片放置在位置1(画布上方)
plt.imshow(img)

#显示灰度化图片在画布下方
#img_gray = rgb2gray(img)  #也可以直接使用rgb2gray方法灰度化
plt.subplot(212)
plt.imshow(img_gray, cmap='gray')


plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/854245
推荐阅读
相关标签
  

闽ICP备14008679号