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标准日志模块logging的使用方法
Nov 01 Python
Python greenlet实现原理和使用示例
Sep 24 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
python使用pycharm环境调用opencv库
Feb 11 Python
Python实现的求解最大公约数算法示例
May 03 Python
Python中交换两个元素的实现方法
Jun 29 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
谈一谈基于python的面向对象编程基础
May 21 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
pandas 空数据处理方法详解
Nov 02 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 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 session
2013/10/28 PHP
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
Python实现新浪博客备份的方法
2016/04/27 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
深入浅析Python的类
2018/06/22 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
酒店前台接待岗位职责
2013/12/03 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
小学优秀学生评语
2014/12/29 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书