Opencv實現(xiàn)二維直方圖的計算及繪制
這篇博客將介紹如何使用Python,Opencv進行二維直方圖的計算及繪制(分別用Opencv和Numpy計算),二維直方圖可以讓我們對不同的像素密度有更好的了解。
1. 效果圖
原始圖如下:
1維直方圖如下:
2維直方圖如下:
X軸顯示S值,Y軸顯示色調(diào)。
hsvmap效果圖如下:
2. 源碼
# OpenCV中的二維直方圖:使用相同的函數(shù)cv2.calcHist()計算。 # 對于1D直方圖,我們從BGR轉(zhuǎn)換為灰度 # 對于2D直方圖,需要將圖像從BGR轉(zhuǎn)換為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://github.com/seminar2012/opencv/blob/master/samples/python/color_histogram.py
到此這篇關于Opencv實現(xiàn)二維直方圖的計算及繪制的文章就介紹到這了,更多相關Opencv 二維直方圖 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python基于tkinter圖形化編程實現(xiàn)簡易計算器功能
這篇文章主要為大家詳細介紹了python基于tkinter圖形化編程實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07Python中Flask-RESTful編寫API接口(小白入門)
這篇文章主要介紹了Python中Flask-RESTful編寫API接口(小白入門),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12