python OpenCV学习笔记实现二维直方图


Posted in Python onFebruary 08, 2018

本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下:

官方文档 ? https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d_histogram.html

在前一篇文章中,我们计算并绘制了一维的直方图。它被称为一维,因为我们只考虑一个特性,即像素的灰度强度值。但是在二维直方图中,你可以考虑两个特征。通常它用于寻找颜色直方图,其中两个特征是每个像素的色调和饱和度值。
有一个python样例(samples/python/color_histogram.py),用于查找颜色直方图。我们将尝试理解如何创建这样的彩色直方图,它将有助于理解像直方图反向投影这样的更深入的主题。

OpenCV中的二维直方图

它非常简单,并且使用相同的函数cv.calcHist()来计算。对于颜色直方图,我们需要将图像从BGR转换为HSV。(记住,对于一维的直方图,我们从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 numpy as np
import cv2 as cv

img = 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 np
import cv2 as cv
from matplotlib import pyplot as plt

img = 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平面,第三个是每个bins的数量,第四个是它们的范围。

绘制二维直方图

方法1:使用cv.imshow()

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

方法2:使用Matplotlib

我们可以使用matplotlib.pyplot.imshow()函数来绘制具有不同颜色映射的2D直方图。它给我们提供了一个更好的关于不同像素密度的想法。但这也不能让我们知道第一眼看到的是什么颜色,除非你知道不同颜色的色调。这很简单,也更好。

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

img = 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轴表示色调。

python OpenCV学习笔记实现二维直方图

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

方法3:OpenCV sample style

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

python OpenCV学习笔记实现二维直方图

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

Python 相关文章推荐
Python学习小技巧总结
Jun 10 Python
python机器学习之KNN分类算法
Aug 29 Python
python虚拟环境迁移方法
Jan 03 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
学习python可以干什么
Feb 26 Python
django如何通过类视图使用装饰器
Jul 24 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
python__name__原理及用法详解
Nov 02 Python
python实现密码强度校验
Mar 18 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 #Python
Python编程argparse入门浅析
Feb 07 #Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 #Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 #Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 #Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 #Python
Python实现上下班抢个顺风单脚本
Feb 07 #Python
You might like
PHP 批量删除数据的方法分析
2009/10/30 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
axios学习教程全攻略
2017/03/26 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
Python对象与引用的介绍
2019/01/24 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Python 如何测试文件是否存在
2020/07/31 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
大专学生求职信
2014/07/04 职场文书
五四演讲稿范文
2014/09/03 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
2015年清明节活动总结
2015/02/09 职场文书
高中教师个人工作总结
2015/02/10 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书