Opencv實(shí)現(xiàn)二維直方圖的計(jì)算及繪制
這篇博客將介紹如何使用Python,Opencv進(jìn)行二維直方圖的計(jì)算及繪制(分別用Opencv和Numpy計(jì)算),二維直方圖可以讓我們對不同的像素密度有更好的了解。
1. 效果圖
原始圖如下:

1維直方圖如下:

2維直方圖如下:
X軸顯示S值,Y軸顯示色調(diào)。

hsvmap效果圖如下:

2. 源碼
# OpenCV中的二維直方圖:使用相同的函數(shù)cv2.calcHist()計(jì)算。
# 對于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計(jì)算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計(jì)算1D直方圖:np.histogram();
# Numpy計(jì)算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
到此這篇關(guān)于Opencv實(shí)現(xiàn)二維直方圖的計(jì)算及繪制的文章就介紹到這了,更多相關(guān)Opencv 二維直方圖 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用Faker進(jìn)行隨機(jī)數(shù)據(jù)生成
大家好,本篇文章主要講的是python使用Faker進(jìn)行隨機(jī)數(shù)據(jù)生成,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-02-02
解決BN和Dropout共同使用時(shí)會(huì)出現(xiàn)的問題
這篇文章主要介紹了解決BN和Dropout共同使用時(shí)會(huì)出現(xiàn)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
win與linux系統(tǒng)中python requests 安裝
requests是Python的一個(gè)HTTP客戶端庫,跟urllib,urllib2類似,今天我們主要來談?wù)剋in與linux系統(tǒng)中python requests的安裝方法以及使用指南2016-12-12
Python使用自帶的base64庫進(jìn)行base64編碼和解碼
在Python中,處理數(shù)據(jù)的編碼和解碼是數(shù)據(jù)傳輸和存儲(chǔ)中非常普遍的需求,其中,Base64是一種常用的編碼方案,本文我將詳細(xì)介紹如何使用Python的base64庫進(jìn)行Base64編碼和解碼,需要的朋友可以參考下2025-04-04
使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測
這篇文章主要介紹了使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
python?使用第三方庫requests-toolbelt?上傳文件流的示例
這篇文章主要介紹了python?使用第三方庫requests-toolbelt?上傳文件流,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
python開發(fā)中module模塊用法實(shí)例分析
這篇文章主要介紹了python開發(fā)中module模塊用法,以實(shí)例形式較為詳細(xì)的分析了Python中模塊的功能、定義及相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11

