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爬虫之urllib2使用指南
Nov 05 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Python的装饰器用法学习笔记
Jun 24 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
Python中常用的8种字符串操作方法
May 06 Python
详解Python的三种可变参数
May 08 Python
如何通过python画loss曲线的方法
Jun 26 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
浅析Python迭代器的高级用法
Jul 16 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 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
Mysql的常用命令
2006/10/09 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
js单例模式的两种方案
2013/10/22 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python SVM 线性分类模型的实现
2019/07/19 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
pytorch构建多模型实例
2020/01/15 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
高中同学聚会邀请函
2014/01/11 职场文书
新春联欢会主持词
2014/03/24 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
学校教师培训工作总结
2015/10/14 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
HTML基础详解(下)
2021/10/16 HTML / CSS