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中的切片赋值
May 08 Python
Python切片操作实例分析
Mar 16 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
pygame实现弹球游戏
Apr 14 Python
python的pip有什么用
Jun 17 Python
python代码中怎么换行
Jun 17 Python
python的setattr函数实例用法
Dec 16 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
4种方法python批量修改替换列表中元素
Apr 07 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
smarty的保留变量问题
2008/10/23 PHP
PHP中uploaded_files函数使用方法详解
2011/03/09 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
php实现购物车功能(上)
2020/07/23 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
酒店工程部经理岗位职责
2015/04/09 职场文书
委托书范本格式
2019/04/18 职场文书
Python合并多张图片成PDF
2021/06/09 Python
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
MySQL窗口函数的具体使用
2021/11/17 MySQL
python和anaconda的区别
2022/05/06 Python