使用 PIL 或 Numpy 数组,如何从图像中删除整行?

2024-01-07

我想知道如何从图像中删除整行,最好是根据行的颜色?

示例:我有一个高度为 5 像素的图像,顶部两行和底部两行是白色,中间行是黑色。我想知道如何让 PIL 识别这一行黑色像素,然后删除整行并保存新图像。

我对 python 有一些了解,并且到目前为止一直在通过列出“getdata”的结果来编辑我的图像,因此任何带有伪代码的答案可能就足够了。谢谢。


我写了下面的代码,删除了每一行全黑的行。我用else 子句 http://docs.python.org/tutorial/controlflow.html#break-and-continue-statements-and-else-clauses-on-loops of the for循环时将执行的循环not休息退出。

from PIL import Image

def find_rows_with_color(pixels, width, height, color):
    rows_found=[]
    for y in xrange(height):
        for x in xrange(width):
            if pixels[x, y] != color:
                break
        else:
            rows_found.append(y)
    return rows_found

old_im = Image.open("path/to/old/image.png")
if old_im.mode != 'RGB':
    old_im = old_im.convert('RGB')
pixels = old_im.load()
width, height = old_im.size[0], old_im.size[1]
rows_to_remove = find_rows_with_color(pixels, width, height, (0, 0, 0)) #Remove black rows
new_im = Image.new('RGB', (width, height - len(rows_to_remove)))
pixels_new = new_im.load()
rows_removed = 0
for y in xrange(old_im.size[1]):
    if y not in rows_to_remove:
        for x in xrange(new_im.size[0]):
            pixels_new[x, y - rows_removed] = pixels[x, y]
    else:
        rows_removed += 1
new_im.save("path/to/new/image.png")

如果您有疑问,请询问:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PIL 或 Numpy 数组,如何从图像中删除整行? 的相关文章

随机推荐

  • 注入修改后的 Spring 安全表达式语言实现后,“需要调试符号信息 (...)”

    我有一个示例类要测试 PreAuthorize注释 看起来或多或少像这样 class BankService PreAuthorize hasCustomRole ROLE CUSTOM or hasRole ROLE EXAMPLE Do
  • 从 SQL Server 数据库生成 DDL 脚本

    如何使用 SQL 选择 存储过程 等 从 SQL Server 数据库生成所有表的 DDL 带有外键 索引等 脚本 除了数据之外我需要一切 I can t使用 Sql Server Management Studio 因为我想在将在 Lin
  • Python重新加载模块不会立即生效

    请参阅下面的复制代码 跟踪内存泄漏我发现 reload module 不会立即生效 下面的程序应该打印 0 1 2 3 4 但是 当快速执行时 它会打印 0 0 0 3 3 等序列 将 sleep 函数中的时间增加到例如 1 秒似乎可以解决
  • 如何在 Swift 中使用 addAttribute

    我正在尝试添加到 UITextViews 的链接 因此我按照以下代码进行操作这个帖子 http www raywenderlich com 48001 easily overlooked new features ios 7 textVie
  • iphone - 带有返回值的performSelectorOnMainThread

    我有以下方法 NSMutableArray getElements NSString theURL 我想知道是否有一种方法可以使用 PerformSelectorOnMainThread 来调用该方法 以便我可以获得返回值 到目前为止 我已
  • 我可以在 Visual Studio 2012 中编译和调试(运行)单个 C++ 文件吗? (如何避免创建过多的项目)

    我正在从一本书中学习 C 并使用 Visual Studio 2012 为了遵循本书的练习 我需要创建多个 cpp 文件 其中包含 main 函数 有什么方法可以编译 调试我的程序 而无需每次都创建新项目 例如 如果我写一个简单的 Hell
  • R 在使用 case_when 时提供参数(R 向量化)

    这是我之前提出的问题的后续问题 当存在大量类别 类型时 R 使用 case when R 向量化 应用多个函数 https stackoverflow com questions 62377561 r apply multiple func
  • wxpython如何退出Mainloop?

    我有一个 wxpython 应用程序 它的运行方式如下 if name main app wx App False frame MainWindow Application frame Show app MainLoop 应用程序的菜单栏上
  • 如何阻止三星手机上过多的对象创建?

    我在许多 Android 三星手机上遇到动画速度变慢的问题 我已经追踪到问题所在 是垃圾收集过多 但是 我的代码没有直接创建任何对象 这是 DDMS 中分配跟踪器的堆栈跟踪 at com samsung android multiwindo
  • 如何在Python中将整个序列推送到redis [重复]

    这个问题在这里已经有答案了 我可以用Redis rpush key 1 2 3 将三个元素推送到redis 但如果有一个序列 seq 1 2 3 Redis rpush key seq 它会将 seq 元素推送到 redis 但不会推送三个
  • 如何使用 Telegram Bot API 从电话号码获取 user_id

    我目前正在开发一个 Telegram 机器人 一旦你知道电话号码 它就能在 Telegram 中获取用户信息 主要目标是获取用户存储在 Telegram 中的所有用户信息 只需知道他 她的电话号码 因此 我尝试使用 Telegram Bot
  • TransactionScope 的层次结构

    是否可以有一个事务范围的层次结构 如果外部事务范围进行了处置 那么内部事务范围中所做的更改会发生什么 我的特殊问题是我的测试代码运行具有事务范围的代码 当我调用具有事务范围的第二组代码时 我得到 无法访问已处置的对象 事务 难道处置内层事务
  • C++ - 更改 X 窗口中的光标

    我以为这很容易找到 但谷歌搜索却毫无帮助 有没有一个简单的 API 可以改变 X 窗口中的鼠标光标 我知道在 Windows 中你可以只调用 SetCursor include
  • AVPlayer 动态音量控制

    如何动态更改 AVPlayer 的音量 我的意思是 我想在每次按下按钮时将音量静音 给定的代码似乎仅在编译时更改它 运行时怎么办 AVURLAsset asset AVURLAsset URLAssetWithURL self myAsse
  • 类路径中的 ICEfaces 库可防止文件下载时弹出“另存为”对话框

    一旦我将库icefaces jaricepush jaricefaces ace jar添加到我的类路径中以便使用ACE组件 我的另存为对话框就不会弹出吗 我不确定这是否是一个错误 但如果类路径中没有库 它就可以工作 这是我的另存为方法 p
  • 用 pyspark 之前已知的良好值填充 null

    有办法替换吗nullpyspark 数据框中的值与最后一个有效值 还有额外的timestamp and session列 如果您认为需要它们来进行 Windows 分区和排序 更具体地说 我想实现以下转换 session timestamp
  • 将数据从 glReadPixels() 转换为 OpenCV::Mat

    我想从动画中获取每个 OpenGL 帧glReadPixels 并将数据转换为OpenCV 垫 我知道glReadPixels 从下一层到上一层 从左到右 按行获取数据 另一方面 OpenCV 以不同的方式存储数据 有谁知道任何库或任何教程
  • 与 svn 的 SSL 协商失败

    我正在运行一个接受 https 请求的服务器 我已经生成了自己的证书 当在 Firefox 中访问该网站时 我收到未知证书错误 但这没关系 这 我认为 表明端口转发等有效 我正在尝试使用 svn 来解决这个问题 当在服务器上使用 svn 但
  • Java HttpURLConnection.getInputStream 但得到 401 IOException

    我正在用 Java 为 CouchDB 编写一个 REST 客户端 下面的代码应该是相当标准的 this httpCnt connect Map
  • 使用 PIL 或 Numpy 数组,如何从图像中删除整行?

    我想知道如何从图像中删除整行 最好是根据行的颜色 示例 我有一个高度为 5 像素的图像 顶部两行和底部两行是白色 中间行是黑色 我想知道如何让 PIL 识别这一行黑色像素 然后删除整行并保存新图像 我对 python 有一些了解 并且到目前