Opencv实现二维直方图的计算及绘制


Posted in Python onJuly 21, 2021

这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算),二维直方图可以让我们对不同的像素密度有更好的了解。

1. 效果图

原始图如下:

Opencv实现二维直方图的计算及绘制

1维直方图如下:

Opencv实现二维直方图的计算及绘制

2维直方图如下:

X轴显示S值,Y轴显示色调。

Opencv实现二维直方图的计算及绘制

hsvmap效果图如下:

Opencv实现二维直方图的计算及绘制

2. 源码

# OpenCV中的二维直方图:使用相同的函数cv2.calcHist()计算。
# 对于1D直方图,我们从BGR转换为灰度
# 对于2D直方图,需要将图像从BGR转换为HSV

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

img = cv2.imread('ym.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 1维直方图
hist = cv2.calcHist([gray], [0], None, [256], [0, 256])
hist, bins = np.histogram(img.ravel(), 256, [0, 256])
plt.hist(img.ravel(), 256, [0, 256])
plt.show()

# 二维直方图可以让我们对不同的像素密度有了更好的了解
# OpenCV计算2D直方图
# HSV图像 [0,1]表示H、S通道,[180,256]表示H、S的bins分别为180、256
# [0,180,0,256]表示值的范围
hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])

hist = np.clip(hist * 0.005, 0, 1)
cv2.imshow('hist', hist)
cv2.waitKey(0)

plt.imshow(hist, interpolation='nearest')
plt.show()

# Numpy计算1D直方图:np.histogram();
# Numpy计算2D直方图:np.historogram2d()
h, s, v = cv2.split(hsv)
hist, xbins, ybins = np.histogram2d(h.ravel(), s.ravel(), [180, 256], [[0, 180], [0, 256]])
plt.imshow(hist, interpolation='nearest')
plt.show()

参考

 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_histograms/py_2d_histogram/py_2d_histogram.html#twod-histogram

https://github.com/seminar2012/opencv/blob/master/samples/python/color_histogram.py

到此这篇关于Opencv实现二维直方图的计算及绘制的文章就介绍到这了,更多相关Opencv 二维直方图 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
python自然语言编码转换模块codecs介绍
Apr 08 Python
python实现二叉树的遍历
Dec 11 Python
利用Python如何生成hash值示例详解
Dec 20 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python3几个常见问题的处理方法
Feb 26 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
pandas的排序和排名的具体使用
Jul 31 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
python scrapy简单模拟登录的代码分析
Jul 21 #Python
python异步的ASGI与Fast Api实现
Jul 16 #Python
Python实现PIL图像处理库绘制国际象棋棋盘
Flask使用SQLAlchemy实现持久化数据
Jul 16 #Python
Python多个MP4合成视频的实现方法
Jul 16 #Python
Python如何解决secure_filename对中文不支持问题
利用Matlab绘制各类特殊图形的实例代码
You might like
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
简明json介绍
2008/09/28 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
JS中表单的使用小结
2014/01/11 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python能在浏览器能运行吗
2020/06/17 Python
Python request post上传文件常见要点
2020/11/20 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
老师对学生的评语
2014/04/18 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2014年教研室工作总结
2014/12/06 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
工作简报范文
2015/07/21 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
总结python多进程multiprocessing的相关知识
2021/06/29 Python