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 相关文章推荐
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Windows下python3.7安装教程
Jul 31 Python
python多线程与多进程及其区别详解
Aug 08 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 Python
Python之Sklearn使用入门教程
Feb 19 Python
python 实现有道翻译功能
Feb 26 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 Python
Python面向对象编程之类的概念
Nov 01 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
PHP自定义大小验证码的方法详解
2013/06/07 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
python生成器的使用方法
2013/11/21 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
如何表示python中的相对路径
2020/07/08 Python
英国标准协会商店:BSI Shop
2019/02/25 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
个人自我剖析材料
2014/02/07 职场文书
保险公司年会主持词
2014/03/22 职场文书
学习礼仪心得体会
2014/09/01 职场文书
代理人委托书
2014/09/16 职场文书
2014年路政工作总结
2014/12/10 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript