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之通过Python连接数据库
Oct 28 Python
python通过urllib2获取带有中文参数url内容的方法
Mar 13 Python
Python使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
简单了解django文件下载方式
Feb 10 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
属性与 @property 方法让你的python更高效
Sep 21 Python
python安装sklearn模块的方法详解
Nov 28 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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技巧小贴士之下篇
2007/03/22 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
浅谈webpack对样式的处理
2018/01/05 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
委托证明书
2014/09/17 职场文书
大学生入党自传2015
2015/06/26 职场文书
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python
mysql查找连续出现n次以上的数字
2022/05/11 MySQL