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函数参数类型*、**的区别
Apr 11 Python
详解Python的Django框架中的templates设置
May 11 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
python装饰器初探(推荐)
Jul 21 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python实现猜数游戏
Mar 27 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
Django3中的自定义用户模型实例详解
Aug 23 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
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP中session变量的销毁
2014/02/27 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP如何将XML转成数组
2016/04/04 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
用于table内容排序
2006/07/21 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Python中条件判断语句的简单使用方法
2015/08/21 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python如何将图片转换为字符图片
2020/08/19 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
基于python实现简单日历
2018/07/28 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
信访工作者先进事迹
2014/01/17 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
单位租房协议范本
2014/12/03 职场文书
2014财务年终工作总结
2014/12/08 职场文书
蓬莱阁导游词
2015/02/04 职场文书