OpenCV 彩色直方图

彩色直方图

(1)直方图是图像中像素强度分布。

(2)直方图统计了每一个强度值所具有的像素个数。

(3)cv2.calcHist(images, channels, mask, histSize, ranges)

import cv2
import matplotlib.pyplot as plt
import numpy as np

def show_image(image,title,pos):
    plt.subplot(3,2,pos)
    plt.title(title)
    image_RGB=image[:,:,::-1]#BGR to RGB
    plt.imshow(image_RGB)
    plt.axis("off")
    
#显示彩色直方图
def show_histogram(hist,title,pos,color):
    plt.subplot(3,2,pos)
    plt.title(title)
    plt.xlim([0,256])
    for h,c in zip(hist,color):
        plt.plot(h,color=c)
        
#计算直方图
def calc_color_hist(image):
    hist=[]
    hist.append(cv2.calcHist([image],[0],None,[256],[0,256]))
    hist.append(cv2.calcHist([image],[1],None,[256],[0,256]))
    hist.append(cv2.calcHist([image],[2],None,[256],[0,256]))
    return hist

#主函数
def main():
    #创建画布
    plt.figure(figsize=(12,8))
    plt.suptitle("Color Histogram",fontsize=4,fontweight="bold")
    
    #读取原图
    img=cv2.imread("./2037551.jpg")
    
    #计算直方图
    img_hist=calc_color_hist(img)
    
    #显示直方图
    show_image(img,"RGB Image",1)
    show_histogram(img_hist,"RGB Image Hist",2,('b','g','r'))
    
    #原始图片中的每个像素增加50个像素值
    M=np.ones(img.shape,dtype="uint8")*50
    
    added_image=cv2.add(img,M)#像素一一对应相加
    
    added_image_hist=calc_color_hist(added_image)
    
    show_image(added_image,'added image',3)
    
    show_histogram(added_image_hist,'added image hist',4,('b','g','r'))
    
    #原始图片中的每个像素减去50个像素值
    subtracted_image=cv2.subtract(img,M)
    
    subtracted_image_hist=calc_color_hist(subtracted_image)
    
    show_image(subtracted_image,'subtracted Image',5)
    
    show_histogram(subtracted_image_hist,'subtracted Image hist',6,('b','g','r'))
    
    plt.show()
    
if __name__=='__main__':
    main()

在这里插入图片描述
琐碎时间阅读基础知识,详情关注微信公众号“知识代码AI”。
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值