首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python PIL检测图像是全黑还是全白

Python PIL检测图像是全黑还是全白
EN

Stack Overflow用户
提问于 2012-12-26 21:52:54
回答 4查看 23.9K关注 0票数 25

使用Python图像库PIL,如何才能检测出图像中所有的像素都是黑色还是白色?

~更新~

条件:不是遍历每个像素!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-26 22:19:55

代码语言:javascript
复制
if not img.getbbox():

..。将测试图像是否完全为黑色。(如果图像中没有非黑色像素,则Image.getbbox()返回falsy None,否则返回一个点的元组,这是真的。)要测试图像是否为全白,请先将其反转:

代码语言:javascript
复制
if not ImageChops.invert(img).getbbox():

您也可以使用img.getextrema()。这将告诉您图像中的最高和最低值。要最容易地处理此问题,您可能应该首先将图像转换为灰度模式(否则,极值可能是RGB或RGBA元组,或者是单个灰度值,或者是索引,而您必须处理所有这些内容)。

代码语言:javascript
复制
extrema = img.convert("L").getextrema()
if extrema == (0, 0):
    # all black
elif extrema == (1, 1):
    # all white

后一种方法可能会更快,但在大多数应用程序中您不会注意到这一点(这两种方法都很快)。

测试黑色或白色的上述技术的单行版本:

代码语言:javascript
复制
if sum(img.convert("L").getextrema()) in (0, 2):
    # either all black or all white
票数 35
EN

Stack Overflow用户

发布于 2016-08-04 00:43:04

在Kindall上展开:如果您使用以下命令查看名为img的图像:

代码语言:javascript
复制
extrema = img.convert("L").getextrema()

它为您提供了图像中的一系列值。因此,全黑图像为(0,0),全白图像为(255,255)。所以你可以看看:

代码语言:javascript
复制
if extrema[0] == extrema[1]:
    return("This image is one solid color, so I won't use it")
else:
    # do something with the image img
    pass

当我从一些数据创建缩略图,并希望确保它正确读取时,这对我很有用。

票数 11
EN

Stack Overflow用户

发布于 2015-03-07 21:17:44

代码语言:javascript
复制
from PIL import Image
img = Image.open("test.png")
clrs = img.getcolors()

clrs包含[("num of occurences","color"),...]

通过检查len(clrs) == 1,可以验证图像是否只包含一种颜色,通过查看clrs中第一个元组的第二个元素,可以推断颜色。

在图像包含多种颜色的情况下,如果99%的像素共享相同的颜色,那么通过考虑出现的次数,您还可以处理几乎完全单色的图像。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14041562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档