• 5-3 直方图均衡化


    #灰度 直方图均衡化
    import cv2
    import numpy as np
    img = cv2.imread('image0.jpg',1)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    cv2.imshow('src',gray)
    dst = cv2.equalizeHist(gray)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)

     我们使用直方图均衡化的时候,必须要对单通道进行处理。所以我们首先要完成通道的分解。我们要把原来的三通道分解成单通道。

    split()方法。将彩色图片传递进去之后,它返回的就是一个三通道数据。我们分别把三通道数据为大家实现一下。

    这样我们分别就有三个通道完成了直方图的均衡化。但是通道分解完之后我们要合并在一起。

    经过直方图均衡化之后,整个图片的颜色发生了一定的变化。这是彩色图片均衡化。

    #彩色 直方图均衡化
    import cv2
    import numpy as np
    img = cv2.imread('image0.jpg',1)
    #gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    cv2.imshow('src',img)
    (b,g,r) = cv2.split(img)# 通道分解
    bH = cv2.equalizeHist(b)#bH定义的是b通道的直方图均衡化之后的结果,我们将b通道的数据传递进去
    gH = cv2.equalizeHist(g)
    rH = cv2.equalizeHist(r)
    result = cv2.merge((bH,gH,rH))#merge()方法是opencv自带的 通道合成
    #dst = cv2.equalizeHist(gray)
    #cv2.imshow('dst',dst)
    cv2.imshow('dst',result)
    cv2.waitKey(0)

    图片读取进来之后我们要进行YUV的分解。这个cvt方法不光能实现彩色图片转化为灰度图片,还可以实现RGB图片转化为当前的YUV图片。

    YUV同样是由三个元素组成。它是一个三维的。我们首先把第一维获取出来,第一维的结果我们先把它进行直方图的均衡化一下。

    均衡化之后我们把当前的YUV三个通道再进行合成,合成一个channels。合成之后我们需要把当前的YUV再转成BGR图片。

    #YUV 直方图均衡化
    import cv2
    import numpy as np
    img = cv2.imread('image0.jpg',1)
    #gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    imgYUV = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)
    #cv2.imshow('src',gray)
    cv2.imshow('src',img)
    channelYUV = cv2.split(imgYUV)
    channelYUV[0] = cv2.equalizeHist(channelYUV[0])
    #dst = cv2.equalizeHist(gray)
    channels = cv2.merge(channelYUV)
    result = cv2.cvtColor(channels,cv2.COLOR_YCrCb2BGR)
    #cv2.imshow('dst',dst)
    cv2.imshow('dst',result)
    cv2.waitKey(0)
  • 相关阅读:
    Spark介绍与环境搭建
    Kafka基本操作
    Hadoop的HDFS概述
    hadoop环境搭建
    常用小工具
    mac机
    Eclipse使用
    微信公众号开发
    PM2
    JS 零散知识点
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/9733781.html
Copyright © 2020-2023  润新知