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

作者:程序媛一枚~ 时间:2023-07-18 23:34:52 

这篇博客将介绍如何使用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

来源:https://blog.csdn.net/qq_40985985/article/details/118862088

标签:Opencv,二维直方图
0
投稿

猜你喜欢

  • 日期垂直排列的两种技巧

    2009-08-28 12:38:00
  • asp最简单的生成验证码代码

    2011-03-07 11:05:00
  • 10点优化sql数据库技巧

    2008-06-09 15:00:00
  • 如何将 Access 的 Memo 型态字段汇入到 SQL2005 的 nvarchar 型态字段

    2008-12-26 18:13:00
  • 客户端数据存储–超越cookies

    2008-01-15 13:01:00
  • 无级分类的多级联动

    2020-07-02 12:53:12
  • PL/SQL编程经验小结开发者网络Oracle

    2010-07-18 13:27:00
  • asp随机提取access数据库记录的几种方法

    2007-09-06 19:42:00
  • js 采用delete实现继承示例代码

    2023-07-17 09:06:52
  • 使用ODBC接口访问MySQL

    2009-02-13 13:59:00
  • javascript 函数调用的对象和方法

    2010-07-02 12:25:00
  • Go web入门Go pongo2模板引擎

    2023-07-22 22:16:43
  • SqlServer参数化查询之where in和like实现详解

    2012-05-22 18:10:50
  • Google Chrome的hack写法以及CSS的支持程度

    2008-09-04 12:28:00
  • Excute后都需要返回一个RecordSet对象吗?

    2009-10-28 18:28:00
  • asp将数据库中的信息存储至XML文件中

    2007-09-19 12:54:00
  • ASP无组件上载,带进度条,多文件上载

    2008-10-29 10:03:00
  • 教程javascript的function(函数)

    2007-09-30 13:38:00
  • YUI Compressor 组件压缩 JavaScript 的一些原理

    2009-08-02 20:22:00
  • 针对SQL Server中业务规则链接的分析

    2009-01-20 11:43:00
  • asp之家 网络编程 m.aspxhome.com