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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
python实现数组插入新元素的方法
May 22 Python
Python制作Windows系统服务
Mar 25 Python
python之super的使用小结
Aug 13 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
Python常用库大全及简要说明
Jan 17 Python
pandas中ix的使用详细讲解
Mar 09 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python爬虫UA伪装爬取的实例讲解
Feb 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
星际流派综述
2020/03/04 星际争霸
PHP类继承 extends使用介绍
2014/01/14 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
Python3处理文件中每个词的方法
2015/05/22 Python
Python pass详细介绍及实例代码
2016/11/24 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
django实现日志按日期分割
2020/05/21 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
大学生党性分析材料
2014/12/19 职场文书
面试通知短信
2015/04/20 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
python实现自动化群控的步骤
2021/04/11 Python