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新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
Python安装第三方库的3种方法
Jun 21 Python
在Django中创建动态视图的教程
Jul 15 Python
详解python3百度指数抓取实例
Dec 12 Python
python win32 简单操作方法
May 25 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
Python 变量类型详解
Oct 10 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
Python命名空间的本质和加载顺序
Dec 17 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
Python 如何查找特定类型文件
Aug 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设计模式 Visitor 访问者模式
2011/06/28 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
python使用分治法实现求解最大值的方法
2015/05/12 Python
Python while 循环使用的简单实例
2016/06/08 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python 批量修改/替换数据的实例
2018/07/25 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
师恩难忘教学反思
2014/04/27 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android