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学习笔记:字典的使用示例详解
Jun 13 Python
Django Admin实现上传图片校验功能
Mar 06 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
tensorflow识别自己手写数字
Mar 14 Python
python 拼接文件路径的方法
Oct 23 Python
Python子类继承父类构造函数详解
Feb 19 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
python中可以声明变量类型吗
Jun 18 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
python - asyncio异步编程
Apr 06 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 设计模式之 单例模式
2008/12/19 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
JavaScript实现区块链
2018/03/14 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
python实现猜数字小游戏
2020/03/24 Python
django celery redis使用具体实践
2019/04/08 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
Django 自动生成api接口文档教程
2019/11/19 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
博士学位自我鉴定范文
2013/12/26 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
夜不归宿检讨书
2014/02/25 职场文书
技校毕业生自荐信
2014/06/03 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
人生感悟经典句子
2019/08/20 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers