Opencv实现二维直方图的计算及绘制

 更新时间:2021年07月19日 08:34:54   作者:程序媛一枚~  
这篇博客将介绍如何使用Opencv进行二维直方图的计算及绘制,维直方图可以让我们对不同的像素密度有更好的了解,感兴趣的可以了解一下

这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算),二维直方图可以让我们对不同的像素密度有更好的了解。

1. 效果图

原始图如下:

在这里插入图片描述

1维直方图如下:

在这里插入图片描述

2维直方图如下:

X轴显示S值,Y轴显示色调。

在这里插入图片描述

hsvmap效果图如下:

在这里插入图片描述

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 二维直方图 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Tensorflow--取tensorf指定列的操作方式

    Tensorflow--取tensorf指定列的操作方式

    这篇文章主要介绍了Tensorflow--取tensorf指定列的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python编程中字符串和列表的基本知识讲解

    Python编程中字符串和列表的基本知识讲解

    这篇文章主要介绍了Python编程中字符串和列表的基本知识讲解,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • python基于tkinter图形化编程实现简易计算器功能

    python基于tkinter图形化编程实现简易计算器功能

    这篇文章主要为大家详细介绍了python基于tkinter图形化编程实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • python 读取、写入txt文件的示例

    python 读取、写入txt文件的示例

    这篇文章主要介绍了python 读取、写入txt文件的示例,帮助大家更好的利用python 处理文件,感兴趣的朋友可以了解下
    2020-09-09
  • 深入探究Python中的迭代器和生成器

    深入探究Python中的迭代器和生成器

    迭代器(Iterators)和生成器(Generators)是 Python 中最强大的功能之一,但也是新手最容易混淆的部分,本文将深入探讨这两种概念,以及它们在 Python 编程中的实际应用,需要的朋友可以参考下
    2023-06-06
  • Python 字符替换的四方法

    Python 字符替换的四方法

    本文主要介绍了Python 字符替换的四方法,主要包括replace、translate、maketrans 和正则这是四种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python中Flask-RESTful编写API接口(小白入门)

    Python中Flask-RESTful编写API接口(小白入门)

    这篇文章主要介绍了Python中Flask-RESTful编写API接口(小白入门),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python自动化测试之异常处理机制实例详解

    Python自动化测试之异常处理机制实例详解

    为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动化测试执行情况尤为重要,下面这篇文章主要给大家介绍了关于Python自动化测试之异常处理机制的相关资料,需要的朋友可以参考下
    2022-06-06
  • 通过Python实现猜灯谜游戏的示例代码

    通过Python实现猜灯谜游戏的示例代码

    新的一年迎来了元宵节,元宵佳节在陪伴家人的同时,自然也少不了赏花灯,猜灯谜的项目。本文会通过Python实现这一游戏,需要的可以参考一下
    2022-02-02
  • python 求定积分和不定积分示例

    python 求定积分和不定积分示例

    今天小编就为大家分享一篇python 求定积分和不定积分示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论