opencv 灰度实验

opencv 灰度实验

灰度图与彩色图最大的不同就是:彩色图是由R、G、B三个通道组成,而灰度图只有一个通道,也称为单通道图像,所以彩色图转成灰度图的过程本质上就是将R、G、B三通道合并成一个通道的过程。

1. 最大值法

对于彩色图像的每个像素,它会从R、G、B三个通道的值中选出最大的一个,并将其作为灰度图像中对应位置的像素值。

代码如下:

python 复制代码
 '''灰度处理------最大值法'''
    #读取图像
    img=cv2.imread(r'./src/1.jpg')
    #取出图像的高度,宽度和BGR(颜色)
    h,w,c=img.shape
    img_gray=np.zeros((h,w),dtype=np.uint8) #构造出和原图形状相同的灰度图
    # 遍历原图像的每个元素
    for row in range(h):
        for col in range(w):
            # 取出原图形中的BGR
            b,g,r=img[row,col]
            # 将bgr的最大值赋值给灰度图
            max_value=max(b,g,r)
            img_gray[row,col]=max_value
    # 显示原图和灰度图
    cv2.imshow("img",img)
    cv2.imshow("img_gray",img_gray)
    cv2.waitKey(0)

步骤:

  • 1.读取原图像
  • 2.获取原图像的高度,宽度,和BGR(颜色)
  • 3.根据原图的高度和宽度构建出一个和原图形状相同的二维数组,类型dtype=np.uint8
  • 4.遍历原图像的每个像素点得到每个像素点的BRG
  • 5.将每个像素点的BRG进行大小比较找出最大值
  • 6.再把这个最大值赋值个与原图同一个高度和宽度的灰度图
  • 7最后将两个图片显示出来

2. 平均值法

对于彩色图像的每个像素,它会将R、G、B三个通道的像素值全部加起来,然后再除以三,得到的平均值就是灰度图像中对应位置的像素值。

代码如下:

python 复制代码
'''灰度处理------均值法'''
    img=cv2.imread(r"./src/1.jpg")
    h,w,c=img.shape
    img_gray=np.zeros((h,w),dtype=np.uint8)
    for row in range(h):
        for col in range(w):
            b,g,r=img[row,col]
            mean_value=(b+g+r)//3
            img_gray[row,col]=mean_value
    cv2.imshow("img",img)
    cv2.imshow("img_gray",img_gray)
    cv2.waitKey(0)

步骤跟最大值法一样

3. 加权均值法

对于彩色图像的每个像素,它会按照一定的权重去乘以每个通道的像素值,并将其相加,得到最后的值就是灰度图像中对应位置的像素值。本实验中,权重的比例为: R乘以0.299,G乘以0.587,B乘以0.114,这是经过大量实验得到的一个权重比例,也是一个比较常用的权重比例。

代码如下:

python 复制代码
 '''灰度处理------加权均值法'''
    img=cv2.imread(r"./src/1.jpg")
    h,w,c=img.shape
    img_gray=np.zeros((h,w),dtype=np.uint8)
    for row in range(h):
        for col in range(w):
            b,g,r=img[row,col]
            mean_value=(b*0.229+g*0.599+r*0.144)
            img_gray[row,col]=mean_value
    cv2.imshow("img",img)
    cv2.imshow("img_gray",img_gray)
    cv2.waitKey(0)

4(直接读取灰度图)cv2.IMREAD_GRAYSCALE

代码如下:

python 复制代码
'''灰度处理------内置属性直接读取灰度图'''
    img_gray=cv2.imread(r'./src/1.jpg',cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img_gray",img_gray)
    cv2.waitKey(0)

5内置将原图转换为灰度图cv2.cvtColor()

cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

代码如下:

python 复制代码
'''灰度处理------内置将原图转换为灰度图'''
    img=cv2.imread(r"./src/1.jpg")
    img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    cv2.imshow("img",img)
    cv2.imshow("img_gray",img_gray)
    cv2.waitKey(0)

6 两个极端的灰度值

相关推荐
Blossom.11813 分钟前
机器学习在智能供应链中的应用:需求预测与物流优化
人工智能·深度学习·神经网络·机器学习·计算机视觉·机器人·语音识别
Gyoku Mint19 分钟前
深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
人工智能·pytorch·python·深度学习·神经网络·算法·聚类
zzywxc78722 分钟前
AI大模型的技术演进、流程重构、行业影响三个维度的系统性分析
人工智能·重构
点控云22 分钟前
智能私域运营中枢:从客户视角看 SCRM 的体验革新与价值重构
大数据·人工智能·科技·重构·外呼系统·呼叫中心
zhaoyi_he30 分钟前
多模态大模型的技术应用与未来展望:重构AI交互范式的新引擎
人工智能·重构
葫三生1 小时前
如何评价《论三生原理》在科技界的地位?
人工智能·算法·机器学习·数学建模·量子计算
m0_751336392 小时前
突破性进展:超短等离子体脉冲实现单电子量子干涉,为飞行量子比特奠定基础
人工智能·深度学习·量子计算·材料科学·光子器件·光子学·无线电电子
美狐美颜sdk5 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
DeepSeek-大模型系统教程6 小时前
推荐 7 个本周 yyds 的 GitHub 项目。
人工智能·ai·语言模型·大模型·github·ai大模型·大模型学习
郭庆汝6 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python