【发布时间】:2020-06-09 12:19:33
【问题描述】:
我在一个文件夹中有很多特定对象的不同图像。我想为色调、饱和度和值设置这些图像的直方图。到目前为止,它已经奏效了。
另一方面,我想将正态分布拟合到直方图,得到均值和标准差。 我遇到了色调直方图的问题。直方图显示它有两个部分,分别是 [0-50] 和 [120-180]。
我的问题是我怎么才能只得到 [120-180] 范围内的平均值和标准差,因为我不知道如何编码。
在total_hue_list 中,我尝试统计所有不同颜色代码的出现次数。
import matplotlib.pyplot as plt
import numpy as np
import cv2
import os
from imutils import paths
directory = os.getcwd() + "\Demos/SotetLila"
total_hue_hist = np.zeros((180,))
total_sat_hist = np.zeros((256,))
total_val_hist = np.zeros((256,))
for imagePath in paths.list_images(directory):
img = cv2.imread(imagePath)
kernel = np.ones((5, 5), np.uint8)
blur = cv2.GaussianBlur(img, (5, 5), 0)
hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)
hsv_image = hsv
hue, sat, val = hsv_image[:, :, 0], hsv_image[:, :, 1], hsv_image[:, :, 2]
hue_hist, bin_hue = np.histogram(hue, bins=range(181))
total_hue_hist += hue_hist
sat_hist, bin_sat = np.histogram(sat, bins=range(257))
total_sat_hist += sat_hist
val_hist, bin_val = np.histogram(val, bins=range(257))
total_val_hist += val_hist
plt.bar(list(range(180)), total_hue_hist)
#plt.bar(list(range(256)), total_sat_hist)
#plt.bar(list(range(256)), total_val_hist)
plt.show()
【问题讨论】:
标签: python