OpenCV 彩色直方图

news2024/11/15 22:20:47

彩色直方图

(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”。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年系统架构设计师考试总结

原文链接:https://www.cnblogs.com/zhaotianff/p/17812187.html 上周六参加了2023年系统架构设计师考试,这次考试与以前有点区别,是第一次采用电子化考试,也是教材改版后的第一次考试。 说说考前准备:为了准备这次考试…

cadence SPB17.4 - allegro - DRC error “Line to SMD Pin Same Net Spaing“

文章目录 cadence SPB17.4 - allegro - DRC error "Line to SMD Pin Same Net Spaing"概述笔记END cadence SPB17.4 - allegro - DRC error “Line to SMD Pin Same Net Spaing” 概述 铺铜前DRC正确。 铺铜后,报错 DRC error “Line to SMD Pin Same …

Squeeze-and-Excitation Networks

1、引言 论文链接:Squeeze-and-Excitation Networks (thecvf.com) 为了提高 CNN(convolutional neural network) 的表示能力,最近的几种方法已经显示出增强空间编码的好处。而 Jie Hu[1] 等专注于通道关系并提出了 SE(Squeeze and Excitation) 块&#x…

uniapp 使用css实现大转盘

思路: 1.一个原型的外壳包裹 2.使用要分配的个数,计算出角度,利用正切函数tan计算出角度对应对边长度 3.使用clip-path画出一个扇形 4.使用v-for循环出对应的份数,依次使用transform rotate旋转对应的角度。 注意&#xff1a…

DM集群的高可用的配置方式(多语言)

一、介绍 强调以下:dm_svc.conf必须放置到应用服务器上才行,放到其他服务器上识别不到。 文章中有的框架可能没写到并不代表不支持,有没提到的可文章下方留言。 1.dm_svc.conf的作用: dm_svc.conf文件主要是为了当DM数据库集群…

ES(ElasticSearch)倒排索引

目录 正排与倒排索引 1.正排索引 作用: 优点: 缺点: 2.倒排索引 原理: 倒排索引的构建流程: 倒排索引的搜索流程: 优点: 缺点: 3. 应用场景 倒排索引中有几个非常重要的概念…

Skyeye云智能制造企业版源代码全部开放

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台],适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢? 很多小伙伴在面试时都被问到过这个问题,刷到过这个题的同学马上就能回答出来:“利用三级缓存”。面试官接着追问:“哪三级缓存呢?用两级行不行呢?” 这时候如果没有深入研究…

AI副业赚钱免费资源大汇总

在当今数字化时代,人工智能(AI)的热潮无处不在,许多人对于如何利用AI技术来创造收入机会感到好奇。本文将介绍一个名为aimoneyhunter的开源项目,这是一个专注于AI副业赚钱的资源汇总,旨在帮助人们在AI时代找…

技术干货 | 针对Spring-Boot 框架漏洞的初探

0x1 前言 这篇文章主要是给师傅们介绍下Spring-Boot 框架漏洞的打法以及主要对于Spring-Boot漏洞的接口泄露信息进行一个分析,后面使用了曾哥的Spring-Boot漏洞扫描工具,可以很大减轻我们对于这个漏洞接口的分析。 0x2 Spring框架简述 Spring是一个ja…

Ollama 在Windows Server 2019中部署 qwen:4b

1、环境 1.1、Ollama 1.2、Windows Server 2019 1.3、qwen:4b 1.4、nginx-1.27.0 2、部署后效果如下。 3、环境安装包下载链接包含本文所有的配置内容。 https://download.csdn.net/download/xingchengaiwei/89571623 4、安装ollama,官网下载地址Download Ollama…

【SpringCloud】企业认证、分布式事务,分布式锁方案落地-2

目录 高并发缓存三问 - 穿透 缓存穿透 概念 现象举例 解决方案 缓存穿透 - 预热架构 缓存穿透 - 布隆过滤器 布隆过滤器 布隆过滤器基本思想​编辑 了解 高并发缓存三问 - 击穿 缓存击穿 高并发缓存三问 - 雪崩 缓存雪崩 解决方案 总结 为什么要使用数据字典&…

一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操

一、LLMs 已经具备了较强能力了,为什么还需要 RAG(检索增强生成)? 尽管 LLM 已展现出显著的能力,但以下几个挑战依然值得关注: 幻觉问题:LLM 采用基于统计的概率方法逐词生成文本,这一机制内在地导致其可能出现看似逻…

PPT模板替换秘籍:一键撤销原模板,轻松更换新风格!

将PPT中的模板换成另一个模板,可以通过几种不同的方法实现。以下是几种常用的方法: 方法一:使用PowerPoint内置的设计选项卡 打开PowerPoint:首先,打开你想要更改模板的PPT文件。 选择“设计”选项卡:在…

Python设计模式 - 工厂方法模式

定义 工厂方法模式是一种创建型设计模式,它定义一个创建对象的接口,让其子类来处理对象的创建,而不是直接实例化对象。 结构 抽象工厂(Factory):声明工厂方法,返回一个产品对象。具体工厂类都…

【学术会议征稿】2024年第七届机械工程与智能制造国际会议(WCMEIM 2024)

2024年第七届机械工程与智能制造国际会议(WCMEIM 2024) 2024 7th World Conference on Mechanical Engineering and Intelligent Manufacturing WCMEIM会议属一年一度的国际学术盛会。因其影响力及重要性,WCMEIM会议自创建筹办以来&#xff…

i 评论,网页评论插件使用示例

网页快速实现评论功能,i 评论插件,来试试吧! https://andi.cn/page/621617.html

生成模型 VQVAE:Neural Discrete Representation Learning

注:加粗下划线名词详解见文章末 了解VQGAN之前,还学习了VQVAE(Vector QuantisedVariational AutoEncoder))这篇论文Neural Discrete Representation Learning,看了几个不错的学习视频 进行了深入了解 VQVAE…

搜狐视频的长期主义,让高精尖知识走近普罗大众

“如果你忽略了量子力学,就没有稳定的电磁系统。” “没有结构,我们就像灰烬一样。” 近日,在一场对谈中,张朝阳与美国哈佛大学教授、物理系系主任,美国国家科学院院士、狄拉克奖与基础物理学突破奖获得者库姆伦瓦法…

Matlab编程资源库(11)多项式计算

一、多项式的四则运算 1.多项式的加减运算 2.多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里,P1、P2是两个多项式系数向量。 3.多项式除法 函数[Q,r]deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项…