OpenCV:计算图片有多色
Posted 大邓和他的Python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV:计算图片有多色相关的知识,希望对你有一定的参考价值。
计算图片色彩丰富度
首先我们要有一个色彩丰富度的标准。Hasler and Süsstrunk的研究将颜色丰富度划分为7级。
无(Not colorful)
稍微(Slightly colorful)
适度(Moderately colorful)
平均(Averagely colorful)
非常(Quite colorful)
高度(Highly colorful)
极端(Extremely colorful)
Hasler and Süsstrunk找了20个人对84副图片按照1-7分进行打分。最后对这份调查数据进行分析,发现图片颜色丰富度有如下计算公式。
最后的C就是图片颜色丰富度的指示变量(其中sigma和miu分别代表标准差和平均值)。
代码
import cv2
import numpy as np
def image_colorfulness(image):
#将图片分为B,G,R三部分(注意,这里得到的R、G、B为向量而不是标量)
(B, G, R) = cv2.split(image.astype("float"))
#rg = R - G
rg = np.absolute(R - G)
#yb = 0.5 * (R + G) - B
yb = np.absolute(0.5 * (R + G) - B)
#计算rg和yb的平均值和标准差
(rbMean, rbStd) = (np.mean(rg), np.std(rg))
(ybMean, ybStd) = (np.mean(yb), np.std(yb))
#计算rgyb的标准差和平均值
stdRoot = np.sqrt((rbStd ** 2) + (ybStd ** 2))
meanRoot = np.sqrt((rbMean ** 2) + (ybMean ** 2))
# 返回颜色丰富度C
return stdRoot + (0.3 * meanRoot)
image = cv2.imread('图片路径')
print(image_colorfulness(image))
运行
#返回图片的丰富度值(0-100)
例子
8.81639958442
52.4526883019
58.1654462546
66.7193517479
67.7661048368
89.8174301858(哈哈,最亮的是打赏小程序码。)
苹果用户也可以打赏了,长按上面小程序码,即可支持大邓。
刚刚试了小程序码,可以给大邓发鸡毛信哦,千里送鸡毛,礼轻情意重。
以上是关于OpenCV:计算图片有多色的主要内容,如果未能解决你的问题,请参考以下文章
使用Python+opencv+k-means根据扫描图片计算叶片面积-续