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

2024-01-18

使用 Python 成像库 PIL 如何检测图像的所有像素是黑色还是白色?

~Update~

健康)状况:Not迭代每个像素!


if not img.getbbox():

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

if not ImageChops.invert(img).getbbox():

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

extrema = img.convert("L").getextrema()
if extrema == (0, 0):
    # all black
elif extrema == (1, 1):
    # all white

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

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

if sum(img.convert("L").getextrema()) in (0, 2):
    # either all black or all white
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python PIL 检测图像是全黑还是全白 的相关文章

  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 查找模块中显式定义的函数 (python)

    好的 我知道您可以使用 dir 方法列出模块中的所有内容 但是有什么方法可以仅查看该模块中定义的函数吗 例如 假设我的模块如下所示 from datetime import date datetime def test return Thi
  • 在 macOS 中通过 Python 访问进程的压缩 RAM(顶部的 CMPRS)的方法?

    我试图弄清楚如何从 Python 访问任何给定进程占用的实际 RAM 量 我发现 psutil Process PID memory info rss 工作得很好 直到操作系统决定开始压缩某些进程的 RAM 然后 所有的 memory in
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 对数据帧的每 2 小时数据进行 Groupby

    我有一个数据框 Time T201FN1ST2010 T201FN1VT2010 1791 2017 12 26 00 00 00 854 69 0 87 1792 2017 12 26 00 20 00 855 76 0 87 1793
  • 为什么 smtplib.SMTP().sendmail 不发送 DKIM 签名邮件

    我已经在服务器上设置了 postfix 以及 openDKIM 当我跑步时 echo Testing setup mail s Postfix test my email address 我收到电子邮件 邮件标题中有一个DKIM Signa
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • Python:高精度time.sleep

    你能告诉我如何在 Win32 和 Linux 上的 Python 2 6 中获得高精度睡眠函数吗 您可以在中使用浮点数sleep http docs python org library time html time sleep 该参数可以
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • 调整 NSWindow 大小以适合子 NSView

    我有一个空的主 NSWindow 和 5 个 NSView NSView 有不同的按钮和标签等 并且窗口是空的 显示的第一个视图是一个菜单 链接到其他视图并返回 这工作正常并且视图切换得很好 但是 如果 NSWindow 具有一定大小 并且
  • 从 HTML 输入返回应用程序脚本中的数据

    我正在尝试使用 HTMLService 从 google 电子表格启动 html 表单 并将数据从选择输入返回到脚本 我正在用这一行收集数据 但我不确定如何将其返回到脚本文件 我尝试了以下各种迭代 城市 form Projects list
  • 模拟抛硬币一周?

    这不是家庭作业 我有兴趣在 R 中设置抛硬币的模拟 我想运行该模拟一周 R 中是否有一个函数可以让我在一段时间内 例如一周 启动和停止模拟 如果一切顺利的话 我可能想增加模拟周期的长度 例如 x lt rbinom 10 1 1 2 所以要
  • 一个简单的闰年逻辑问题

    public class LeapYear public static void main String args int year Integer parseInt args 0 boolean isLeapYear divisible
  • Android FirebaseRecyclerAdapter populateViewHolder() 永远不会被调用

    我有一个如下所示的 firebase 数据结构 我正在尝试使用 FirebaseRecyclerAdapter 加载此数据 问题是 populateViewHolder 没有被调用 对数据库结构的引用有效 我可以使用 FriendsRef
  • 无法在未调用 Looper.prepare() 的线程内创建处理程序 [xamarin]

    所以我实际上没有问题 因为我已经解决了它 但如果其他人遇到这个问题 有一个简洁的解决方案总是好的 虽然有很多 Can t create handler inside thread which has not called Looper pr
  • Android 兼容包和 getLoaderManager()

    安卓兼容包 http android developers blogspot com 2011 03 fragments for all html据说支持LoaderManager 如何获取 LoaderManager 的实例 Fragme
  • 如果Python中的单元格包含特定字符,如何为其着色?

    我正在处理一个数据框 来自 Excel 文件 我想格式化单元格 DF具有以下内容 作为示例 a b c 234 gt 500 200 gt 500 0 234 gt 500 400 6 66 34 1 我想将包含 gt 的单元格着色为红色
  • Python 3 - pickle 可以处理大于 4GB 的字节对象吗?

    基于此comment https stackoverflow com a 29704623 1202808以及参考文档 来自 Python 3 4 的 Pickle 4 0 应该能够 pickle 大于 4 GB 的字节对象 但是 在 Ma
  • 如何在 Django REST 框架 ViewSet 子类中使用分页?

    我有一个简单的子类viewsets ViewSet看起来像 from rest framework import viewsets from rest framework response import Response from mode
  • Angular2目标特定路由器出口

    我有一个应用程序 它有一个基本路由器插座 用作整个应用程序的基础 然后是一个子路由器出口 用户登录后使用该子路由器出口来显示由于单击基于基本路由器出口的导航链接而加载的任何组件 我希望在基本模板中单击导航链接时能够定位子路由器出口 当我单击
  • 如何在核心数据中存储 swift 枚举?

    Swift 允许您定义枚举 但核心数据不支持 开箱即用 如何保存它们 我在互联网上看到的推荐解决方案 迄今为止使用过 是使用私有变量 class ManagedObjectSubClass NSManagedObject enum Card
  • 查询数据库中的元组列表

    由于我是Python编程新手 所以我不太了解如何从数据库查询数据 首先 我在 SQL Server 中创建了数据库 其中包含 2 列 String列和Numeric column String Numeric One 1 Five 5 Th
  • 如何创建持久性 cookie 和非持久性 cookie?

    我似乎不知道如何创建持久性 cookie 和非持久性 cookie 例如 它们在发送回的 HTTP 标头方面有何不同 Cookie 有一个隐式或显式设置的到期日期 该日期控制它们的持续时间 取决于用户代理实际执行的情况 cookie 可能仅
  • C# 中的用户定义公式

    我有一个应用程序 用户可以为每个对象指定他自己的测量点 然后 这些测量值将用于将对象分类为 A 需要服务 B 服务应在 X 天内安排 C 不需要 ATM 服务 然而 这些对象几乎可以是任何东西 我们无法硬编码如何将测量值聚合到分类 我们需要
  • 编译器错误:“错误 CS0307:变量 'int' 不能与类型参数一起使用”

    如果我有以下代码 private void Check bool a bool b private void Check int a int b int c bool flag Check a lt b a gt flag c b 10 我
  • 如何使用H2数据库创建存储过程?

    有人尝试过使用 H2 数据库创建存储过程吗 要在 Java 函数中访问数据库 您确实需要连接 对于H2 有两种方式获得这样的连接 解决方案1 如果Java函数的第一个参数是ajava sql Connection 然后数据库提供连接 对于
  • 我们如何重命名 rpm 版本?

    我想将 rpm 文件的名称从 oldname 7 x86 64 rpm 更改为 newname 8 x86 64 rpm 我使用新名称创建了新的 rpm 但是当我尝试执行时 rpm Uvh newname 8 x86 64 rpm 它抛出以
  • 将 MS Word 2002 模板从 PC 转换为 Mac

    我必须转换数百个 MS Word 2002 模板 在 PC 上 才能在 Macintosh 上使用 我必须评估Word 模板是否可以在iWork Pages 和Mac 版Microsoft Word 中运行 我无法转换以下内容 Word V
  • Python PIL 检测图像是全黑还是全白

    使用 Python 成像库 PIL 如何检测图像的所有像素是黑色还是白色 Update 健康 状况 Not迭代每个像素 if not img getbbox 将测试图像是否是全黑的 Image getbbox 返回假值None如果图像中没有