Opencv实现二维直方图的计算及绘制
目录
- 1. 效果图
- 2. 源码
- 参考
1. 效果图 原始图如下:
文章图片
1维直方图如下:
文章图片
2维直方图如下:
X轴显示S值,Y轴显示色调。
文章图片
hsvmap效果图如下:
文章图片
【Opencv实现二维直方图的计算及绘制】
2. 源码
# OpenCV中的二维直方图:使用相同的函数cv2.calcHist()计算。# 对于1D直方图,我们从BGR转换为灰度# 对于2D直方图,需要将图像从BGR转换为HSVimport cv2import numpy as npfrom matplotlib import pyplot as pltimg = 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 二维直方图 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Java|Java OpenCV图像处理之SIFT角点检测详解
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM