将自定义函数应用于图像中每个像素的快速方法

2024-02-12

我正在寻找一种更快的方法来将自定义函数应用于图像,我用它来删除蓝色背景。我有一个函数可以计算每个像素与背景中大约蓝色的距离。带有循环的原始代码如下所示:

def dist_to_blue(pix):
    rdist = 76 - pix[0]
    gdist = 150 - pix[1]
    bdist = 240 - pix[2]
    return rdist*rdist + gdist*gdist + bdist*bdist

imgage.shape #outputs (576, 720, 3)
for i, row in enumerate(image):
    for j, pix in enumerate(row):
        if dist_to_blue(pix) < 12000: image[i,j] = [255,255,255]

然而,对于这个相对较小的图像,此代码大约需要 8 秒才能运行。我一直在尝试使用 numpy 的“向量化”函数,但这将该函数单独应用于每个值。但是我想对每个像素执行此操作,即不扩展 z/rgb 维度

我提出的唯一改进是将 for 循环替换为以下内容:

m = np.apply_along_axis(lambda pix: (255,255,255) if dist_to_blue(pix) < 12000 else pix, 2, image)

其运行时间约为 7 秒,仍然慢得令人痛苦。我是否缺少一些东西可以将其加快到合理的执行时间


这应该会快一点......;)

import numpy as np 
blue = np.full_like(image, [76,150,250])
mask = np.sum((image-blue)**2,axis=-1) < 12000
image[mask] = [255,0,255]

在这里,您将生成理想的蓝色图像,逐个像素地计算图像差异的平方,然后在生成蒙版并使用它来修改原始图像中的值之前对最后一个轴(rgb 向量)求和。

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

将自定义函数应用于图像中每个像素的快速方法 的相关文章

  • 如何并行安装/编译 pip 要求(使 -j 等效)

    我的 pip 要求中有很多软件包需要安装 我想并行处理它们 我知道 例如 如果我想要n并行作业来自make我必须写make j n 是否有满足 pip 要求的等效命令 Thanks 有时 pip 使用 make 来构建依赖项 如果在开始之前
  • Python:os.remove 不起作用

    为什么不是os remove string 为我工作 我的代码写如下 try os remove a output current time trmv successful message message n output message
  • 如何将二维数组作为 multiprocessing.Array 传递给 multiprocessing.Pool?

    我的目标是将父数组传递给mp Pool并填充它2s 同时将其分发到不同的进程 这适用于一维数组 import numpy as np import multiprocessing as mp import itertools def wor
  • 扭曲的日志记录到屏幕(标准输出)不起作用

    我有这个小程序取自这里 https twistedmatrix com documents 16 3 0 core howto logger html usage for emitting applications from twisted
  • 我应该使用 Pylons 还是 Pyramid?

    我本来打算从 Django 迁移到 Pylons 但后来我遇到了 Pyramid 塔架和金字塔有什么区别 我读了一些文字塔书 http pylonsbook com 目前涵盖 Pylons 0 9 7 并且想知道它是否是 Pylons 和
  • 字符串中数字的连续相加

    我是一名正在学习 python 的新程序员 并且在如何完成此任务方面遇到了困难 所以本质上我有一个从文件导入的数字字符串需要读取 并且需要将第一个数字的总和添加到第二个数字并将其转换为正确的 ascii 字符 因此 例如 如果我正在读取字符
  • 无法启动 Windows 快捷方式

    我正在尝试使用 python 启动 Windows 我已经尝试了 os system subprocess call os startfile 等多种方法 但总是收到错误消息 指出路径不存在 我知道路径是正确的 因为我尝试在 CMD EXE
  • Python Twisted 与 Cmd 模块集成

    我喜欢Python的Twisted http twistedmatrix com and Cmd http docs python org library cmd html 我想一起使用它们 我已经完成了一些工作 但到目前为止我还没有弄清楚
  • 张量流 - 向量中的前 k 个值到二进制向量

    假设我有一个带有值的向量 0 4 1 2 8 7 0 2 如何获得前 k 个值的二进制向量 k 3 0 1 0 0 1 1 0 0 in 张量流 TensorFlow 的tf math top k https www tensorflow
  • 如何通过不规则索引获取子张量?

    我想通过不规则索引获得子张量 这是我的问题 Input tensor 2x8x10x1 Batch x Height x Width x Channel index Height 0 1 4 5 index Width 0 1 4 5 8
  • Python列表错误还是我错了?

    我构建了一个 3 级嵌套列表 run on Python 3 2 3 32 bit on Win 7 L2 list 0 for i in range 2 L3 list L2 for i in range 3 L4 list L3 for
  • Pytorch TypeError:eq() 收到无效的参数组合

    num samples 10 def predict x sampled models guide None None for in range num samples yhats model x data for model in sam
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • df.style.apply 在显示中居中显示多索引值

    当我跑步时 import pandas as pd from IPython display import display df pd DataFrame a index pd MultiIndex from product 0 1 3 c
  • Django 自定义文件存储系统

    我有一个自定义存储 import os from django core files storage import Storage class AlwaysOverwriteFileSystemStorage Storage def get
  • 如何使用 python 在 XML 声明后添加注释

    import xml etree ElementTree as ET def addCommentInXml fileXml C Users Documents config xml tree ET parse fileXml root t
  • 将连续行与相同的列值合并

    我有一个看起来像这样的东西 我该如何处理 0 d 0 The DT 1 Skoll ORGANIZATION 2 Foundation ORGANIZATION 3 4 based VBN 5 in IN 6 Silicon LOCATIO
  • 如果出现重复,则主键取正值

    我有一个数据框df Key1 Key2 Value K11 K21 V1 K11 K21 V1 K13 K23 V2 K13 K23 V2 现在 例如对于相同的键 K11 K21 组合 我们有 2 个值 一负一正 如何从此 df 中仅获取正
  • 仅将唯一行插入 SQLite (python)

    我在用着cursor executemany将 CSV 文件中的批量行插入到 SQLite 表中 根据主键字段 其中一些行预计会重复 当我执行该命令时 可以预见的是 我会收到完整性错误 并且不会插入任何内容 如何有选择地仅插入非重复行 而无
  • 带有远程解释器的 Python 控制台无法在 PyCharm 中接受输入

    我是使用 PyCharm 进行远程开发的新手 我设置了一个远程环境 除了一个例外之外它工作正常 无法在控制台中接受用户输入 在控制台中运行以下语句时 控制台被阻塞 提示 上一个命令仍在运行 请等待或按控制台中的 Control C 来中断

随机推荐

  • `Set` 类型的具体示例是什么?`Set` 的含义是什么?

    我一直试图理解什么Set除了在 Adam Chlipala 的书中遇到它之后SO中的这个精彩讨论 https stackoverflow com questions 39601502 what exactly is a set in coq
  • 使用 Angular 下载 .xls 文件:JSON 中 JSON.parse 位置 0 处出现意外标记 P ()

    我有以下服务器方法用于返回byte for an xls文档存储在Azure Blob Storage FunctionName ReadBatchFile public async static Task
  • 如何显示“向下滚动!”当且仅当内容在纯 CSS 中溢出?

    我能找到的最接近的 对于纯CSS 是这样的 https lea verou me 2012 04 background attachment local https lea verou me 2012 04 background attac
  • 快速排序 - 哪个子部分应该首先排序?

    我正在阅读一些文本 其中声称有关两个递归快速排序调用的顺序 首先调用较小的子问题很重要 这与尾递归结合使用可确保堆栈深度为 log n 我完全不确定这意味着什么 为什么我应该首先对较小的子数组调用快速排序 将快速排序视为隐式二叉树 枢轴是根
  • Node JS 永久加载 dotenv

    我想问是否有人知道如何永远运行可以加载 env 文件 目前如果我们运行forever start app js process env foo 变得未定义 TLDR 您需要添加 workingDir您的 cronjob 行的路径 forev
  • 验证 URL

    目前 我正在使用 Angular 5 我尝试验证 URL 如下所示 HTML div class form group col sm 6 div
  • 防止在 Sympy 中计算乘法表达式

    我正在生成一个包含两个分数的表达式 并且想用 LaTeX 漂亮地打印整个表达式 然后放在工作表上 例如 形式为 5 7 3 4 但是 当我执行以下操作时 fract1 sympy sympify Fraction 5 7 fract2 sy
  • git 恢复后,Heroku 上的 SSH 指纹未授权

    几周前 我不得不从 github 恢复我的主分支 从那以后我一直收到一条错误 指出 您的指纹密钥 无权访问我的应用程序 我查看了此问题的先前答案 并尝试删除旧密钥对 创建一个新密钥对并上传 我使用了以下帖子 但仍然遇到相同的错误 您的带有指
  • 减少 Git 存储库大小

    我尝试寻找有关减少存储库大小的好教程 但没有找到 如何减小存储库大小 大约 10 MB 但是Heroku https en wikipedia org wiki Heroku只允许 50 MB 而且我还没有完成应用程序的开发 我将常见的嫌疑
  • 流畅的映射 - 不同程序集中的实体和类映射

    当使用流畅配置来指定流畅映射时 如下所示 Mappings m gt m FluentMappings AddFromAssembly typeof UserMapping Assembly 目前我收到 NHibernate Mapping
  • 为 Scala 特征中的方法指定具体类型

    我想在 Scala 特征中定义一个方法 其中该方法的参数和返回类型对应于扩展该特征的同一个具体类 我尝试过类似以下的方法 trait A def foo obj this type this type final case class B
  • 如何处理 OO 应用程序中的横切关注点?使用单例?依赖注入?什么?

    假设我目前正在设计一个应用程序 需要使用全局计时系统 这是一个跨领域的问题 我需要从应用程序中的基本上任何位置访问来自该全球计时系统的数据 并且我看不到 应用程序的这一部分将需要它 而其他部分则不需要 我的问题是 我应该将其设计为一种环境上
  • UITableView 当更改影响出队后单元格高度的约束时,最终会导致约束损坏

    此代码块试图触及问题的核心 如果在使单元出队后 通过configure 约束发生变化 单元格高度也发生变化 然后您最终会收到破坏约束的警告 Unable to simultaneously satisfy constraints 但是 它显
  • HTML div 和 span 元素有什么区别?

    我想询问一些简单的例子来展示其用途 div and span 我见过它们都用来标记页面的一部分id or class 但我有兴趣知道是否有时会优先选择其中一个 div is a 块元素 https en wikipedia org wiki
  • 在自己的网站上托管 .apk 文件

    我需要托管我的 apk文件存放在 Android 市场或任何其他应用程序商店以外的一个公共网站上 在android市场中 注册到市场后下载 apk将自动安装在手机上 无需任何手动操作 所以我愿意创建一个 URL 并托管我的 apk文件到其中
  • C++ 中 const_cast 的行为 [重复]

    这个问题在这里已经有答案了 这是我的问题 问题在评论中 const int a 5 const cast
  • 强制 symbolicatecrash 使用特定的 .app 和 .dSYM 文件?

    我有一个来自我的应用程序的临时版本的 crash 日志 symbolicatecrash 拒绝对其进行符号化 我已经应用 patch 删除 die 命令 https github com chrispix symbolicatecrash
  • TensorFlow 估计器的类数没有变化

    我尝试对 MNIST 数据集使用张量流估计器 由于某种原因它一直说我的n classes即使它是 10 也被设置为 1 import tensorflow as tf import numpy as np from tensorflow e
  • 是否可以在运行时创建绑定重定向?

    应用程序启动后 是否有办法创建适用于所有未来程序集加载的绑定重定向 抱歉回复旧帖子 但这个博客对这个问题有更好的答案 希望有人觉得它有用 我的用例 从经典 ASP 应用程序调用的 COM 互操作程序集执行绑定重定向 http blog sl
  • 将自定义函数应用于图像中每个像素的快速方法

    我正在寻找一种更快的方法来将自定义函数应用于图像 我用它来删除蓝色背景 我有一个函数可以计算每个像素与背景中大约蓝色的距离 带有循环的原始代码如下所示 def dist to blue pix rdist 76 pix 0 gdist 15