200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 图片饱和度 色调 明度的计算

图片饱和度 色调 明度的计算

时间:2020-01-15 11:49:54

相关推荐

图片饱和度 色调 明度的计算

一、计算图片的饱和度、色调、明度的思路

首先用opencv或 PIL 读取图片,然后将图片转换到HSV空间。调用cv2.split()方法将 H、S、V空间分别返回,然后将每个空间中非0值累加求均值,即得到 图片 的 **average_H,average_S,average_**V。

二、计算单张图片的 饱和度、色调、明度

##计算 单张图片的 色调(H),饱和度(S),明度(V),并返回 avg_H,avg_S,avg_V ##def compute_HSV(img_path):image = cv2.imread(img_path)# get H,S,V value seperatelyhsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)H, S, V = cv2.split(hsv)## 明度(V)v = V.ravel()[np.flatnonzero(V)] #亮度非零的值average_v = sum(v)/len(v)## 饱和度(S)s = S.ravel()[np.flatnonzero(S)]average_s = sum(s)/len(s)## 色调(H)h = H.ravel()[np.flatnonzero(H)]average_h = sum(h)/len(h)# print('avg_H:{:.6f},\tavg_S:{:.6f},\t avg_V{:.6f}\t'.format(average_h,average_s,average_v))return average_h,average_s,average_v

三、计算一个图片文件夹下的饱和度、色相、明度值

## 计算文件夹中的所有图片的 avg_H,avg_S,avg_V,## 并返回 [img_path,avg_H,avg_S,avg_V]四元组 ,avg_Hlist,avg_Slist,avg_Vlist ##def compute_dir_HSV(root_path):I_pathHSV = [] # 便于获取 复合约束条件的 图片cls_dir = os.listdir(root_path) # all image_name# all image_pathimg_path_list = [os.path.join(root_path, cls_dir[x]) for x in range(len(cls_dir))] avg_Hlist,avg_Slist,avg_Vlist = [],[],[]for img_path in img_path_list:avg_H,avg_S,avg_V = compute_HSV(img_path)I_pathHSV.append([img_path,avg_H,avg_S,avg_V])avg_Hlist.append(avg_H)avg_Slist.append(avg_S)avg_Vlist.append(avg_V)return I_pathHSV,avg_Hlist,avg_Slist,avg_Vlist

四、绘制图片文件夹下的饱和度、色相、明度分布图

def draw_distribute_chart(root_path):# 调用上方写好的计算图片文件下的方法_, avg_Hlist, avg_Slist ,avg_Vlsit = compute_dir_HSV(root_path)sns.set_style("darkgrid") # 设置主题颜色chart_avg_H = avg_Hlistchart_avg_S = avg_Slistchart_avg_V = avg_Vlsitsns.distplot(chart_avg_H, color='g',label='avg_H') sns.distplot(chart_avg_S, color='r',label='avg_S')sns.distplot(chart_avg_V, color='y',label='avg_V')plt.legend()plt.show() #不显示图时,加上此行代码

单个图片文件夹下图片的色相、饱和度、明度分布图

(/c129240dbd7048f99daa19c565e68d59.png#pic_center)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。