python 判断灰度图像

Posted cltt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 判断灰度图像相关的知识,希望对你有一定的参考价值。

from PIL import Image
import matplotlib.pyplot as plt
# 黑白照片(灰度图)识别
def isGrayMap(img, threshold = 15):
    """
    入参:
    img:PIL读入的图像
    threshold:判断阈值,图片3个通道间差的方差均值小于阈值则判断为灰度图。
    阈值设置的越小,容忍出现彩色面积越小;设置的越大,那么就可以容忍出现一定面积的彩色,例如微博截图。
    如果阈值设置的过小,某些灰度图片会被漏检,这是因为某些黑白照片存在偏色,例如发黄的黑白老照片、
    噪声干扰导致灰度图不同通道间值出现偏差(理论上真正的灰度图是RGB三个通道的值完全相等或者只有一个通道,
    然而实际上各通道间像素值略微有偏差看起来仍是灰度图)
    出参:
    bool值
    """
    if len(img.getbands()) == 1:
        return True
    img1 = np.asarray(img.getchannel(channel=0), dtype=np.int16)
    img2 = np.asarray(img.getchannel(channel=1), dtype=np.int16)
    img3 = np.asarray(img.getchannel(channel=2), dtype=np.int16)
    diff1 = (img1 - img2).var()
    diff2 = (img2 - img3).var()
    diff3 = (img3 - img1).var()
    diff_sum = (diff1 + diff2 + diff3) / 3.0
    if diff_sum <= threshold:
        return True
    else:
        return False

 

以上是关于python 判断灰度图像的主要内容,如果未能解决你的问题,请参考以下文章

如何用DIB绘制8位的灰度图像?绘出的灰度图像为啥出现蓝色和红色?

灰度图像直方图变换的一些代码

灰度图像直方图变换的一些代码

OpenCV——Harris角点检测

python如何获取图某一点的灰度

Python将彩色图像转为灰度图像