计算机视觉基础17---二维直方图
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。代码编写:Jupyter Notebook。# 一维直方图:只统计像素的灰度值一个特征;# 二维直方图:统计像素的色相和饱和度,用于查找图像的颜色直方图;# 1.OpenCV的二维直方图# 语法格式:hist = cv2.calcHist(image, channels, mask, histSize, ranges)# 参数说明:# a.hi
·
参考书目:《OpenCV计算机视觉基础教程》–夏帮贵。
代码编写:Jupyter Notebook。
# 一维直方图:只统计像素的灰度值一个特征;
# 二维直方图:统计像素的色相和饱和度,用于查找图像的颜色直方图;
# 1.OpenCV的二维直方图
# 语法格式:hist = cv2.calcHist(image, channels, mask, histSize, ranges)
# 参数说明:
# a.hist:返回的直方图;
# b.image:指定的原图从BGR色彩空间转换为HSV色彩空间,实际参数用方括号括起来;
# c.channels:设置为[0, 1]时,表示同时处理色相和饱和度;
# d.histSize:设置BINS值为[180, 256]时,表示色相为180,饱和度为256;
# e.ranges:设置为[0, 180, 0, 256]时,表示色相值取值范围为[0, 180],饱和度的取值范围为[0, 256];
import cv2 as cv
import matplotlib.pyplot as plt
img1 = cv.imread("apollo_car.JPG")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2HSV)
hist = cv.calcHist([img2], [0, 1], None, [180, 256], [0, 180, 0, 256])
cv.imshow("apollo", img1)
cv.imshow("calcHist", img2)
cv.imshow("hist", hist)
#plt.imshow(hist, interpolation = "nearest")
#plt.show()
cv.waitKey(0)
# 2.Numpy中的二维直方图
# 语法格式:hist, xedges, yedges = np.histogram2D(x, y, bins, range)
# 参数说明:
# a.hist:返回的直方图;
# b.xedges:返回的x的直方图的BINS边界值;
# c.yedges:返回的y的直方图的BINS边界值;
# d.x和y为原图对应通道转换成的一维数组;
# e.bins为BINS的值,如:[180, 256];
# f.range:像素值范围,格式为:[[0, 180], [0, 256]];
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = cv.imread("apollo_car.JPG")
img2 = cv.cvtColor(img1, cv.COLOR_BGR2HSV)
h, s, v = cv.split(img2)
hist, x, y = np.histogram2d(h.ravel(), s.ravel(), [180, 256], [[0, 180], [0, 256]])
cv.imshow("apollo", img1)
cv.imshow("apollo_hsv", img2)
cv.imshow("apollo_hist", hist)
plt.imshow(hist, interpolation = "nearest")
plt.show()
cv.waitKey(0)
更多推荐
所有评论(0)