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进行基础的函数式编程的教程
Mar 31 Python
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
Python实现二维有序数组查找的方法
Apr 27 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
python对excel文档去重及求和的实例
Apr 18 Python
深入了解Python在HDA中的应用
Sep 05 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
Python笔记之facade模式
Nov 20 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
python 实现性别识别
Nov 21 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python实现web方式logview的方法
2015/08/10 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
商场租赁意向书
2014/07/30 职场文书
反四风对照检查材料
2014/09/22 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
2016年母亲节广告语
2016/01/28 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB
Python中的 enumerate和zip详情
2022/05/30 Python
cypress测试本地web应用
2022/06/01 Javascript