终于搞定HUE了
1 python中rgb2hsv中hue与色卡不准
python自带的opencv的包里面的函数,将图片从rgb转到hsv颜色空间中,分别输出色度(h)饱和度(s)亮度(v)的数值,但是与网上的标准色卡比较,s,v是准确的,但是h老是不准,然后查阅了很多很多资料,猫猫叹气🤦
(1)用python自带的函数,hue色卡不准
因为函数搞出来的Hue的范围是0-180所以要搞到实际的0-360的范围很多教程就是直接*2,所以我不知道是不是这里出了甚么问题(捂住大脸)
代码如下:
#用python自带的函数,hue色卡不准,弃用
# -*- coding: utf-8 -*-
import os
import cv2
import os.path
import matplotlib.pyplot as plt # 画图
import numpy as np # 数值计算
import xlsxwriter # EXCEL写入
from PIL import Image # 图像处理
# 写入EXCEL
workbook = xlsxwriter.Workbook(r'C:\Users\admin\Desktop\py\DataOutput.xlsx') # 创建一个Excel文件
worksheet = workbook.add_worksheet('sheetnew') # 创建一个sheet,名为sheetnew
headings = ['demo', 'name', 'avr_h'] # 表头
worksheet.write_row('A1', headings) # headings 写入Excel
# 计算颜色特征数值
n = 2
filepath = r'C:\Users\admin\Desktop\py\pic' # 图像文件所在目录
pathDir = os.listdir(filepath)
for allDir in pathDir: # 遍历文件夹
path = r'C:/Users/admin/Desktop/py/pic/' + allDir
writename = allDir # 图片名称
image = cv2.imread(path)
hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV) # RGB转为HSV
H, S, V = cv2.split(hsv)
# opencv中hsv的范围如下:H: [0,180]
# 在做hsv各通道颜色的计算时,常用的hsv范围如下:H:[0,360]
HH = H.astype(np.float) * 2 # 转换范围H->[0-360]
avg_hh = int(np.mean(HH)) # 平均色度
worksheet.write_row('B' + str(n), [writename, avg_hh]) # 写出到EXCEL
worksheet.insert_image('A' + str(n), path) # 输出图片
n = n + 1
workbook.close()
os.startfile(r'C:\Users\admin\Desktop\py\DataOutput.xlsx')
(2)结果如下
参考的色卡