10.图片主色调--像素点均值

我们可以获取一个图片每个通道的均值来得到整个图片的主色调

使用到的图片

10.图片主色调--像素点均值_第1张图片

10.图片主色调--像素点均值_第2张图片

代码如下

import cv2 as cv


def mean_image(img1, img2):
    m1 = cv.mean(img1)
    m2 = cv.mean(img2)
    print(m1)
    print(m2)


src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
mean_image(src1,src2)
"""0是一致等待"""
cv.waitKey(0)

得到了两个图片的均值

(26.398724830767904, 26.398724830767904, 26.398724830767904, 0.0)
(106.83018044237485, 111.15746848905562, 112.97378339728942, 0.0)

从三通道的数字上分析,第一个图片每个通道的均值都一样,说明是一张黑白图片

而3个通道的均值都很低,说明这张图片主色调是黑色

第二张图片三通道比较平均,而GBR通道的绿色和红色稍高,表明整体画面偏暖色调,因为绿红叠加=黄

进一步,我们可以通过图像的方差(教程说是方差,其实是错误的)来查看整体像素的偏差度

import cv2 as cv


def meanStdDev_image(img1, img2):
    m1, dev1 = cv.meanStdDev(img1)
    m2, dev2 = cv.meanStdDev(img2)
    print(m1)
    print(m2)


src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
mean_image(src1, src2)
"""0是一致等待"""
cv.waitKey(0)

我看的教程上说meanStdDevfan返回的是方差,但是我查看函数说明的时候人家里面写的是标准差

def meanStdDev(src, mean=None, stddev=None, mask=None): # real signature unknown; restored from __doc__
    """
    meanStdDev(src[, mean[, stddev[, mask]]]) -> mean, stddev
    .   Calculates a mean and standard deviation of array elements.

既然有疑惑那我们就来验证下

为了验证,我准备了一张一半黑一半白的图片

10.图片主色调--像素点均值_第3张图片

因为我是手工分割的,不会正好是一半,不过接近就行了

根据方差的计算公式\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\mu )^{2}

如果函数返回的数值是方差的话,那结果应该会接近\frac{(0-128)^{2}+(255-128)^{2}}{2}=16256.5

下面我们来看下代码

import cv2 as cv



def meanStdDev_image(img3):   
    m3, dev3 = cv.meanStdDev(img3)
    cv.imshow("im", img3)
    print(m3, dev3)



src3 = cv.imread("image/Pixel/Pixel_Operation_Mean.png")
meanStdDev_image(src3)
"""0是一致等待"""
cv.waitKey(0)

得到的实际结果:

[127.34755103]
[127.34755103]
[127.34755103]

三通道都是127\approx \sqrt{16256} 也就是 \sigma 标准差

所以结论就是meanStdDev函数的注释是对的,这玩意儿得到的是标准差,根本不是方差

现在做教程的人也是越来越不严谨了,软件行业真是世风日下

继续看下先前两个图片的标准差

[77.68386035]
[77.68386035]
[77.68386035]
[64.37683975]
[69.78804824]
[73.04103423]

标准差越大说明明暗像素之间的差异比较大

标准差小说明图片明暗差异较小

so,这是不是就表明一张逆光拍摄的人物照标准差会比较大

HDR这玩意儿是不是就是根据这个数值来判断的呢?

目前还不知道是不是可行~

你可能感兴趣的:(10.图片主色调--像素点均值)