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实现全角半角转换的方法
Aug 18 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python实现简易Web爬虫详解
Jan 03 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
django foreignkey(外键)的实现
Jul 29 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
django 将自带的数据库sqlite3改成mysql实例
Jul 09 Python
flask框架中的cookie和session使用
Jan 31 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处理会话函数大总结
2015/08/05 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
机器学习python实战之手写数字识别
2017/11/01 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
《在山的那边》教学反思
2014/02/23 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
员工工作表现评语
2014/04/26 职场文书
电教室标语
2014/06/20 职场文书
高三霸气励志标语
2014/06/24 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
个人工作表现自我评价
2015/03/06 职场文书
北京爱情故事观后感
2015/06/12 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers