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实现sublime3的less编译插件示例
Apr 27 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
python实现发送邮件及附件功能
Mar 02 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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 has encountered an Access Violation
2007/01/15 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP多进程编程实例详解
2017/07/19 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
Python实现定时任务
2017/02/08 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python实现员工管理系统
2018/01/11 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
cf搞笑广告词
2014/03/14 职场文书
物理学专业自荐信
2014/06/11 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
同乡会致辞
2015/07/30 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript