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 IDLE加上自动补全和历史功能
Nov 30 Python
Python3.6正式版新特性预览
Dec 15 Python
pycharm安装图文教程
May 02 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
详解K-means算法在Python中的实现
Dec 05 Python
Python实现扣除个人税后的工资计算器示例
Mar 26 Python
python 列表降维的实例讲解
Jun 28 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
python处理大日志文件
Jul 23 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
解析thinkphp中的导入文件标签
2013/06/20 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
python实现PCA降维的示例详解
2020/02/24 Python
python try...finally...的实现方法
2020/11/25 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
电子商务专业个人的自我评价分享
2013/10/29 职场文书
学期个人工作总结
2015/02/13 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle