opencv python 2D直方图的示例代码


Posted in Python onJuly 20, 2018

Histograms - 3 : 2D Histograms

我们已经计算并绘制了一维直方图,因为我们只考虑一个特征,即像素的灰度强度值.但在二维直方图中,需要考虑两个特征,通常,它用于查找颜色直方图,其中两个要素是每个像素的色调和饱和度值.

OpenCV中的2D直方图

使用函数cv.calcHist(), 对于颜色直方图,我们需要将图像从BGR转换为HSV。 (请记住,对于1D直方图,我们从BGR转换为灰度)。对于2D直方图,其参数将修改如下:

  • channels = [0,1]:因为我们需要同时处理H(色调Hue)和S(饱和度Saturation).
  • bins = [180,256]:180对应H,256对应S.
  • range = [0,180,0,256]:色调值介于0到180之间,饱和度介于0到256之间.
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img.jpg')

hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])

Numpy中的2D直方图

np.histogram2d(). (注意,对于1D直方图,我们使用np.histogram()

hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])

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

绘制2D直方图

方法 - 1:使用cv.imshow()

我们得到的结果是一个大小为180x256的二维数组. 因此我们可以像使用cv.imshow()函数一样正常显示它们. 它将是一个灰度图像,它不会告诉你什么颜色,除非你知道不同颜色的色调.

方法-2:使用Matplotlib

我们可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色图的2D直方图. 它让我们更好地了解不同的像素密度, 但是,除非你知道不同颜色的色调值,否则这也不会让我们知道第一眼看到的是什么颜色. 它简单而且更好.
代码:

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

img = cv2.imread('img6.png')

hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

hist = cv2.calcHist([hsv], [0,1], None, [180,256], [0,180,0,256])

plt.imshow(hist, interpolation='nearest')
plt.show()

opencv python 2D直方图的示例代码

opencv python 2D直方图的示例代码

在直方图中,你可以看到H=100和S=200附近的一些高值,它对应于天空的蓝色.同样,在H=25和S=100附近也可以看到另一个峰值,它对应着宫殿的黄色.

方法-3:OpenCV样本风格

在Opencv-Python2样本中有一个用于颜色直方图的示例代码(samples/python/color_histogram.py).如果您运行代码,您可以看到直方图显示相应的颜色,或者简单地输出一个颜色编码的直方图.它的结果非常好(尽管您需要添加一些额外的行).
在这段代码中,作者在HSV中创建了一个彩色地图,然后将其转换为BGR,生成的直方图图像与此颜色图相乘,他还使用一些预处理步骤来移除小的孤立像素,从而形成一个良好的直方图.

opencv python 2D直方图的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接oracle数据库实例
Oct 17 Python
详解Python的Django框架中的templates设置
May 11 Python
Python读写配置文件的方法
Jun 03 Python
Python IDE PyCharm的基本快捷键和配置简介
Nov 04 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
详解重置Django migration的常见方式
Feb 15 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
通过python 执行 nohup 不生效的解决
Apr 16 Python
django 连接数据库出现1045错误的解决方式
May 14 Python
pytorch中[..., 0]的用法说明
May 20 Python
Linux下python制作名片示例
Jul 20 #Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 #Python
使用python脚本实现查询火车票工具
Jul 19 #Python
Python 判断文件或目录是否存在的实例代码
Jul 19 #Python
Flask框架Jinjia模板常用语法总结
Jul 19 #Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 #Python
python代码过长的换行方法
Jul 19 #Python
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
如何离线执行php任务
2017/02/21 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
微信小程序wepy框架笔记小结
2018/08/08 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
openlayers4实现点动态扩散
2020/08/17 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
会计人员岗位职责
2014/03/19 职场文书
大学生就业意向书范文
2014/04/01 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
2016年寒假见闻
2015/10/10 职场文书
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript