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脚本来获取Google搜索结果的示例
May 04 Python
Tensorflow简单验证码识别应用
May 25 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
python监控nginx端口和进程状态
Sep 06 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
Python爬取12306车次信息代码详解
Aug 12 Python
python 如何对logging日志封装
Dec 02 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python分析apache访问日志脚本分享
2015/02/26 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
史学专业毕业生求职信
2014/05/09 职场文书
工程质检员岗位职责
2015/04/08 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js