颜色直方图 灰度图彩色图

article/2025/9/28 12:22:22

1.读取照片 cv2.imread(图片路径,cv2.IMREAD_COLOR)

2.定义color变量=('b','g','r') 代表三个通道

3.彩色图像为例

    for i,col in enumerate(color):遍历三个通道

        --- cv2.calcHist()函数赋值给变量histr

        ---  作图 plt.plot(histr,color=col),col就是三个通道

plt.show()展示

 

enumerate中文翻译过来的意思是"枚举"。

在Python中一般是对可遍历的对象,比如列表、元组或字符串进行遍历。

enumerate(sequence, [start=0]).

比如:

s=[1,2,6,9]

for index,item in enumerate(s):

print(index,item)

得到的结果是:

0 1

1 2

2 6

3 9

默认是从下标为0开始,当然可以指定start为其他的数字,但是这里的数字表示的是起始的数字,而非列表或其他数据类型的真实下标!

 cv2.calcHist()函数的作用:通过直方图可以很好的对整幅图像的灰度分布有一个整体的了解,直方图的x轴是灰度值(0~255),y轴是图片中具有同一个灰度值的点的数目。


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


images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]
channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。
mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并使用它。
histSize:BIN 的数目。也应用中括号括来
BINS :上面的直方图显示了每个像素值的像素数,即从0到255。即您需要256个值才能显示上述直方图。但是请考虑一下,如果您不需要单独查找所有像素值的像素数,而是在像素值间隔内查找像素数,该怎么办?例如,您需要找到介于 0 到 15 之间的像素数,然后是 16 到 31、...、240 到 255。您只需要 16 个值来表示直方图。
因此,只需将整个直方图拆分为 16 个子部分,每个子部分的值就是其中所有像素计数的总和。这每个子部分都称为"BIN"。在第一种情况下,条柱数为256(每个像素一个),而在第二种情况下,它只有16。BINS 在 OpenCV 文档中由术语histSize表示。
ranges: 像素值范围常为 [0 256]

 

 


示例:
import cv2
import numpy as np
import matplotlib.pyplot as plt
 
img = cv2.imread('cat.jpg', 0)  # 0表示灰度图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
# print(hist)
# print(hist[175])
# print(type(hist))
plt.hist(img.ravel(),256);
#print(img.ravel())
plt.show()
输出结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZb3lvMjExMzk5,size_20,color_FFFFFF,t_70,g_se,x_16示例2:多通道图的“直方图”
import cv2
import numpy as np
import matplotlib.pyplot as plt
 
 
img = cv2.imread('cat.jpg') 
color = ('b','g','r')
for i,col in enumerate(color): 
    histr = cv2.calcHist([img],[i],None,[256],[0,256]) 
    plt.plot(histr,color = col) 
    plt.xlim([0,256]) 
    print(i,col)
输出结果:

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZb3lvMjExMzk5,size_20,color_FFFFFF,t_70,g_se,x_16

 

到这里完整的直方图就这样子绘制出来了,但是大家也许会对calcHist的返回值有疑问,到底返回了什么才能画出来这样的图像呢?下面我们则来讨论该函数的返回值
cv2.calcHist()函数的返回值

对于hist = cv2.calcHist([img],[0],None,[256],[0,256])中,hist是一个256*1的矩阵,每一个值代表了每个灰度值对应的像素点数目
print(type(hist))
<class 'numpy.ndarray'>
输出的结果表示这是一个多维数组
print(hist)
[[1.000e+00]
 [0.000e+00]
 [2.000e+00]
 [0.000e+00]
       .......
 [2.010e+02]
 [2.180e+02]
 [2.160e+02]
 [2.660e+02]
 [3.350e+02]
 [3.110e+02]
 [4.670e+02]]
经计算,共有256个值,即可以输出hist[0]到hist[255]。整个hist[i]则表示灰度值

print(hist[175],hist[255])
[3181.] [467.]
通过直方图可看出输出的结果就是每一个灰度值对应的像素数目

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZb3lvMjExMzk5,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBZb3lvMjExMzk5,size_20,color_FFFFFF,t_70,g_se,x_16 

 

 

 


http://chatgpt.dhexx.cn/article/WdLYMJTB.shtml

相关文章

基于MATLAB颜色直方图的图像检索

基于颜色直方图的图像检索 概述 在过去的十几年间&#xff0c;有许多知名机构都对图像检索系统进行了深入的研究&#xff0c;病开发出了相应的检索系统&#xff0c;例如IBM Almaden研究中心研制的QBIC系统&#xff0c;Virage公司研发的VIRAGE系统&#xff0c;麻省理工大学多媒体…

pyimagesearch-4 聪明的女孩:计算机视觉和图像搜索引擎使用颜色直方图的指南

原文链接 It’s…it’s a histogram. – Dr. Grant 好吧&#xff0c;也许这不是确切的引用。但是&#xff0c;如果格兰特博士知道颜色直方图的力量&#xff0c;我认为他会同样激动。 更重要的是&#xff0c;当电力耗尽时&#xff0c;直方图不会让游客吃东西。 那么&#xff…

OpenCV 学习笔记(颜色直方图计算 calcHist)

OpenCV 学习笔记&#xff08;颜色直方图计算 calcHist&#xff09; 最近在看一本OpenCV 的书&#xff0c;书名是 《OpenCV 3 Computer Vision Application Programming Cookbook &#xff08;third edition&#xff09;》&#xff0c;里面给了很多很实用的代码片段。最近这几篇…

Opencv绘制HSV颜色直方图

一. 使用Opencv绘制HSV颜色直方图 所用的函数 cvCvtColor 可在&#xff1a; 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图 文章中查找相关介绍 所使用的结构体&#xff1a; CvHistogram 以及函数&#xff1a; cvCalcHist CvCreateHist cvGetMinMaxHistValue cv…

基于颜色直方图优化的图像增强方法

最近改图像颜色迁移的论文&#xff0c;审稿人要求补充基于直方图优化的方法细节。趁此机会&#xff0c;我重新下载了相关文献&#xff0c;决定重新学习下该类方法&#xff0c;并把一些细节记录在本篇博客中&#xff0c;供交流学习。 目录 1. 前言 2. 背景知识 3. 颜色变换 4. 颜…

[OpenCV实战]52 在OpenCV中使用颜色直方图

颜色直方图是一种常见的图像特征&#xff0c;顾名思义颜色直方图就是用来反映图像颜色组成分布的直方图。颜色直方图的横轴表示像素值或像素值范围&#xff0c;纵轴表示该像素值范围内像素点的个数或出现频率。颜色直方图属于计算机视觉中的基础概念&#xff0c;其常常被应用于…

关于颜色直方图

一、颜色距 转自&#xff1a;https://blog.csdn.net/jaych/article/details/51137341 1、颜色距离 颜色距离指的是两个颜色之间的差距&#xff0c;通常距离越大&#xff0c;两个颜色相差越大&#xff0c;反之&#xff0c;两个颜色越相近。在计算颜色距离时&#xff0c;有类似…

图像特征分析---颜色特征描述---颜色距和颜色直方图

一、颜色距 转自&#xff1a;https://blog.csdn.net/jaych/article/details/51137341 1、颜色距离颜色距离指的是两个颜色之间的差距&#xff0c;通常距离越大&#xff0c;两个颜色相差越大&#xff0c;反之&#xff0c;两个颜色越相近。在计算颜色距离时&#xff0c;有类似计算…

颜色特征提取(一)——颜色直方图(opencv实现)

直方图——再讲颜色直方图之前&#xff0c;先简单介绍一下直方图。 直方图作为一种简单有效的基于统计特性的特征描述子&#xff0c;在计算机视觉领域广泛使用。它的优点主要体现在两个方面:一是对于任意一个图像区域&#xff0c;直方图特征的提取简单方便;其二&#xff0c;直…

一般颜色直方图

颜色直方图是一种用于图像处理和分析的图表&#xff0c;它可以显示图像中不同颜色的数量。通常&#xff0c;颜色直方图会将颜色分成几个色调区间&#xff0c;每个区间对应一个条形图&#xff0c;其中条形图的高度表示该色调区间中的像素数量。通过颜色直方图&#xff0c;你可以…

网络爬虫Jsoup

简介 网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、…

【Java】Jsoup爬虫快速入门案例

1、前言 该技术博客是根据B站狂神说Java教程的笔记总结&#xff0c;希望能为大家带来帮助&#xff01; 2、Jsoup实战案例 爬虫可以理解为爬取数据&#xff0c;所谓爬取数据就是&#xff1a; 获取请求返回的页面信息&#xff0c;筛选出我们想要的数据 如果想要爬取数据&#…

android爬虫框架jsoup,Android笔记之JSoup爬虫入门

前言 闲扯一些没用的&#xff0c;写这篇文章之前是有点私心的&#xff0c;因为之前评论某简书大v的文章是鸡汤&#xff0c;瞬间被拉黑&#xff0c;连个解释和说明的机会都没有&#xff0c;文章语言干涩&#xff0c;内容平平&#xff0c;于是就好奇到底是些什么样的人喜欢和吹捧…

Java的Jsoup爬虫

Java的Jsoup爬虫&#xff0c;爬携程酒店评分&#xff0c;保存数据库中 前言一、Jsoup爬虫pom二、逻辑代码部分1.首先我们要先确定爬取的东西&#xff0c;这边我就以携程的酒店评分为例子。2.Jsoup进行解析具体要求爬的内容3.接下来我们就是将爬取的数据存入数据库中 总结 前言 …

使用Jsoup爬虫爬取相关图片

一、Jsoup概述 jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于jQuery的操作方法来取出和操作数据。 主要功能&#xff1a; 1. 从一个URL&#xff0c;文件或字符串…

jsoup爬虫实战详解之新浪

** jsoup爬虫实战详解之新浪 ** 今天分享一个之前困扰了一段时间的关于jsoup爬取新浪网页信息的踩坑总结。 在实现以上功能的之前我门首先要了解两个重点&#xff1a;1.关于jsoup的爬取细节以及教程&#xff0c;爬取时所要了解jsoup的相关标签&#xff1a;具体的自己大家感兴…

Java JSOUP爬虫学习分享

昨天从狂神大佬那学习了如何用jsoup爬去网站数据&#xff0c;现在整理了一下给大家分享一下。 先创建一个名叫JsoupPojo的实体类用来装入数据。 Data public class JsoupPojo {private String src;private String name; } 下面是将用来爬取的方法封装成了一个工具类 Compon…

java jsoup爬虫

前言&#xff1a;在日常开发中&#xff0c;我们必定是与我们的数据源打交道&#xff0c;我们的数据源无非就那么几个 1.数据库2.爬虫数据 3.第三方系统交互&#xff0c;这里介绍java 中网页版的爬虫jsoup的使用 1.首先导入我们的jar包 maven坐标如下 org.jsoup jsoup 1.13.1 c…

Jsoup爬虫并解析网页

Jsoup爬虫并解析网页 京东搜索 java&#xff0c;爬取有关java的商品信息 1、获取请求 String url"https://search.jd.com/Search?keywordjava";2、解析网页。&#xff08;Jsoup返回的Document对象就是浏览器的Document对象&#xff09; 所有js中操作Document对象的…

Jsoup爬虫入门实战

一、Jsoup介绍 jsoup 是一款基于 Java 的HTML解析器&#xff0c;它提供了一套非常省力的API&#xff0c;不但能直接解析某个URL地址、HTML文本内容&#xff0c;而且还能通过类似于DOM、CSS或者jQuery的方法来操作数据&#xff0c;所以 jsoup 也可以被当做爬虫工具使用。 相关…