目录
一、图像灰度变化的原理
彩色图像中的每个像素的颜色由R、G、B三个分量决定,而每个分量的取值范围为0~255。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其算法有以下两种:
1)求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋给这个像素的三个分量。
2)根据RGB和YUV颜色空间的变化关系,建立亮度Y与R、G、B三个颜色分量的对应关系:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。
OpenCV有相关的函数cvtColor,用它可以直接完成灰度化操作。设img为源图像矩阵,myimg1为灰度化后的目标图像矩阵。myimg2为复制的图像。
二、Python代码
import cv2
import numpy as np
fn = r"C:\Users\LIHAO\Pictures\Saved Pictures\wallhaven-1pdkkw.jpg"
if __name__ == "__main__":
img = cv2.imread(fn)
sp = img.shape
print(sp)
# 获取图像大小
# height
sz1 = sp[0]
# width
sz2 = sp[1]
# 显示图像大小
print('width:%d\nheight:%d'%(sz2,sz1))
# 创建一个窗口并显示图像
cv2.namedWindow('img')
cv2.imshow('img', img)
# 复制图像矩阵,生成与源图像一样的图像,并显示
myimg2 = img.copy()
cv2.namedWindow('myimg2')
cv2.imshow('myimg2', myimg2)
# 复制并转换为灰度图像,并显示
myimg1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('myimg1')
cv2.imshow('myimg1', myimg1)
cv2.waitKey()
cv2.destroyAllWindows()
三、示例图片
四、获取的图像大小
(1080, 1920, 3)
width:1920
height:1080
五、运行效果图