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爬虫之抓取糗事百科代码分享
Nov 06 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python实现简单神经网络算法
Mar 10 Python
python实现图书管理系统
Mar 12 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
python实现图片彩色转化为素描
Jan 15 Python
Python判断有效的数独算法示例
Feb 23 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
python3爬虫中异步协程的用法
Jul 10 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python 实现端口扫描工具
Dec 18 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
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
php获取图片信息的方法详解
2015/12/10 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
初学Python函数的笔记整理
2015/04/07 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
flask框架视图函数用法示例
2018/07/19 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
美国Max仓库:Max Warehouse
2020/05/31 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
早恋主题班会
2015/08/14 职场文书
Nginx配置https的实现
2021/11/27 Servers