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 相关文章推荐
Python 时间处理datetime实例
Sep 06 Python
Python中DJANGO简单测试实例
May 11 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python如何将多个PDF进行合并
Aug 13 Python
在Python中实现函数重载的示例代码
Dec 12 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 Python
Python  lambda匿名函数和三元运算符
Apr 19 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python实现弹窗祝福效果
2019/04/07 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
python相对企业语言优势在哪
2020/06/12 Python
python super()函数的基本使用
2020/09/10 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
涉密人员保密承诺书
2014/05/28 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL