目标

在本章中,我们将学习查找和绘制2D直方图。这将在以后的章节中有所帮助。

介绍

在第一篇文章中,我们计算并绘制了一维直方图。 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值。 但是在二维直方图中,您要考虑两个特征。 通常,它用于查找颜色直方图,其中两个特征是每个像素的色相和饱和度值。

已经有一个python示例(samples / python / color_histogram.py)用于查找颜色直方图。 我们将尝试了解如何创建这种颜色直方图,这对于理解诸如直方图反向投影之类的更多主题将很有用。

OpenCV中的二维直方图

它非常简单,并且使用相同的函数cv.calcHist()进行计算。 对于颜色直方图,我们需要将图像从BGR转换为HSV。(请记住,对于一维直方图,我们从BGR转换为灰度)。对于二维直方图,其参数将进行如下修改:

  • channel = [0,1],因为我们需要同时处理H和S平面。
  • bins = [180,256] 对于H平面为180,对于S平面为256。
  • range = [0,180,0,256] 色相值介于0和180之间,饱和度介于0和256之间。

现在检查以下代码:

import numpy as npimport cv2 as cvimg = cv.imread('home.jpg')hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)hist = cv.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])

就是这样。

Numpy中的二维直方图

Numpy还为此提供了一个特定的函数:np.histogram2d()。(记住,对于一维直方图我们使用了np.histogram())。

import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('home.jpg')hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])

第一个参数是H平面,第二个是S平面,第三个是每个箱子的数量,第四个是它们的范围。

现在我们可以检查如何绘制这个颜色直方图。

绘制二维直方图

方法1:使用 cv.imshow()

我们得到的结果是尺寸为80x256的二维数组。因此,可以使用cv.imshow()函数像平常一样显示它们。它将是一幅灰度图像,除非您知道不同颜色的色相值,否则不会对其中的颜色有太多了解。

方法2:使用Matplotlib

我们可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色图的2D直方图。它使我们对不同的像素密度有了更好的了解。但是,除非您知道不同颜色的色相值,否则乍一看并不能使我们知道到底是什么颜色。我还是更喜欢这种方法。它简单而更好。

注意
使用此功能时,请记住,插值法应采用最近邻以获得更好的结果。

考虑下面的代码:

import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('home.jpg')hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)hist = cv.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )plt.imshow(hist,interpolation = 'nearest')plt.show()

下面是输入图像及其颜色直方图。X轴显示S值,Y轴显示色相。

在直方图中,您可以在H = 100和S = 200附近看到一些较高的值。它对应于天空的蓝色。同样,在H = 25和S = 100附近可以看到另一个峰值。它对应于宫殿的黄色。您可以使用GIMP等任何图像编辑工具进行验证。

方法3:OpenCV示例样式

OpenCV-Python2示例中有一个颜色直方图的示例代码(samples / python / color_histogram.py)。如果运行代码,则可以看到直方图也显示了相应的颜色。或者简单地,它输出颜色编码的直方图。其结果非常好(尽管您需要添加额外的线束)。

在该代码中,作者在HSV中创建了一个颜色图。然后将其转换为BGR。将所得的直方图图像与此颜色图相乘。他还使用一些预处理步骤来删除小的孤立像素,从而获得良好的直方图。

我将其留给读者来运行代码,对其进行分析并拥有自己的解决方法。下面是与上面相同的图像的代码输出:

您可以在直方图中清楚地看到存在什么颜色,那里是蓝色,那里是黄色,并且由于棋盘的存在而有些白色。很好!

opencv 直方图_OpenCV-Python 直方图-3:二维直方图 | 二十八相关推荐

  1. 使用Python,Opencv进行二维直方图的计算及绘制

    使用Python,Opencv进行二维直方图的计算及绘制 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算 ...

  2. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  3. Python+OpenCV:二维直方图(2D Histograms)

    Python+OpenCV:二维直方图(2D Histograms) ################################################################# ...

  4. OpenCV系列之直方图-3:二维直方图 | 二十八

    目标 在本章中,我们将学习查找和绘制2D直方图.这将在以后的章节中有所帮助. 介绍 在第一篇文章中,我们计算并绘制了一维直方图.之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值.但是在二维 ...

  5. 【opencv】直方图-3:二维直方图(一维灰度强度,二维色相饱和度,)

    4_10_3_直方图3:二维直方图 - OpenCV中文官方文档 学习查找和绘制2D直方图. 前情提要 一维直方图仅考虑一个特征,即像素的灰度强度值. 二维直方图要考虑两个特征. 通常,它用于查找颜色 ...

  6. 【OpenCV-Python】21.OpenCV的二维直方图

    21.OpenCV的二维直方图 文章目录 前言 一.OpenCV中的二维直方图 二.Numpy中的二维直方图 三.直方图示例 1.使用Numpy函数计算直方图 2.使用OpenCV函数计算直方图 四. ...

  7. python二维数据读取对齐_从投影的二维直方图绘制对齐的x,y一维直方图

    我需要生成一个类似于this example中所示的图像: 不同之处在于,我用numpy的histogram2d生成了一个二维直方图,并用imshow和gridspec绘制了二维直方图: 如何将二维直 ...

  8. 显示照片的二维直方图

    显示照片的二维直方图 import cv2 from matplotlib import pyplot as plt img = cv2.imread('E:\Python-workspace\Ope ...

  9. HALCON示例程序class_2dim_unsup.hdev基于二维直方图的聚类分类

    HALCON示例程序class_2dim_unsup.hdev基于二维直方图聚类分类的颜色分类 示例程序源码(加注释) 读入图片 read_image (Image, 'patras') 关闭窗口 d ...

最新文章

  1. C++动态数组再总结
  2. 规格选择_Axure教程:实现商品规格选择功能
  3. vc 获取月份的天数_「青少年编程」课程:输入年份与月份,得到该月有多少天...
  4. 关于CRM插件调试方面事
  5. python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?
  6. SC || 记不住的正则
  7. 实用的Python库
  8. 利用反射给属性赋值,调用方法,调用构造器--getDeclaredField,getDeclaredMethod,getDeclardConstructor
  9. linux下删除服务
  10. ELK 收集 Docker 日志
  11. ftp服务器匿名账号,登陆ftp服务器的匿名账号
  12. 超详细的阿里云服务器购买及远程连接开机(Win系统)
  13. 数据结构C语言之停车场管理
  14. TypeScript——Web前端开发的救赎
  15. redmine与svn完美集成方案
  16. jquery实现输入框实时统计字数和设置字数限制功能
  17. windows 10 ISO 纯净版 官方来源
  18. 史上最全讲解:JAVA中的Map与Thread
  19. EO-88遥测信号接收教程
  20. 五五规划首年“开门红”,特步离跻身第一梯队还差几个五年?

热门文章

  1. 文件系统04 - 零基础入门学习Delphi37
  2. thinkphp 二级域名绑定模块,导致设置的路由被多域名共用的问题解决方案
  3. 设置默认浏览器是谷歌,打开却是IE的解决方案
  4. 解决Ubuntu的root账号无法登录SSH问题-Permission denied, please try again.
  5. 【报告分享】2021年度私域经营洞察报告.pdf(附下载链接)
  6. 美团搜索推荐多业务商品排序探索与实践
  7. 【干货】中国非结构化数据中台实践白皮书.pdf(附55页pdf下载链接)
  8. 【报告分享】新世代、新圈层:2020垂直圈层营销报告(附下载链接)
  9. 写给大一大二大三还在迷惘中的学生
  10. 预训练语言模型论文分类整理