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 isinstance判断对象类型
Sep 06 Python
跟老齐学Python之Python安装
Sep 12 Python
Python实现抢购IPhone手机
Feb 07 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python使用scrapy发送post请求的坑
Sep 04 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
python3.8下载及安装步骤详解
Jan 15 Python
python构造IP报文实例
May 05 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
python实现批处理文件
Jul 28 Python
Python的property属性详细讲解
Apr 11 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 存取 MySQL 数据库的一个例子
2006/10/09 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
javascript天然的迭代器
2010/10/29 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
vue中引用阿里字体图标的方法
2018/02/10 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python学习基础之循环import及import过程
2018/04/22 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
清明节演讲稿
2014/05/27 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
Django与数据库交互的实现
2021/06/03 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android