如何更改 numpy 数组中的像素值

2023-11-27

我有一个大的 RGB 图像作为 numpy 数组,我想将所有具有 R=0,G=0,B=0 的像素设置为 R=255,G=0,B=0。 最快的方法是什么? 我试过:

for pix in result:
    if np.all(np.logical_and(pix[0]==pix[1],pix[2]==0,pix[2]==pix[1])):
        pix [0] = 255

但这样我就没有一个像素了。还有类似的方法,那不是迭代索引吗?


这是一个矢量化的解决方案。您的图像基本上是一个 w x h x 3(颜色)数组。我们可以利用那些不容易掌握但非常强大的广播规则。

基本上,我们将整个数组与具有您要查找的值的 3 个向量进行比较。由于广播规则,Numpy 会将每个像素与这三个向量进行比较,并告诉您它是否匹配(因此在这种特定情况下,红色、绿色和蓝色是否匹配)。您最终将得到一个与图像大小相同的 true 和 false 布尔数组。

现在我们只想找到所有三种颜色都匹配的像素。为此,我们使用“all”方法,如果数组的所有值都为 true,则该方法为 true。如果我们将其应用于某个轴(在本例中为颜色轴),无论所有颜色都匹配,我们都会得到一个 true 的 w x h 数组。

现在我们可以将此 2D 布尔掩码应用回原始的 w x h x 3 数组,并获取与我们的颜色匹配的像素。我们现在可以重新分配它们——再次通过广播。

这是示例代码

import numpy as np

#create a 2x2x3 image with ones
img = np.ones( (2,2,3) )

#make the off diagonal pixels into zeros
img[0,1] = [0,0,0]
img[1,0] = [0,0,0]

#find the only zeros pixels with the mask 
#(of course any other color combination would work just as well)
#... and apply "all" along the color axis
mask = (img == [0.,0.,0.]).all(axis=2)

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

如何更改 numpy 数组中的像素值 的相关文章

  • Python实时读取串口数据

    我正在使用 Python 中的脚本通过串行端口以 2Mbps 的速度从 PIC 微控制器收集数据 PIC 在 2Mbps 下完美定时工作 FTDI USB 串行端口在 2Mbps 下工作也很好 均通过示波器验证 我每秒发送消息 大小约为 1
  • Python,将字典存储在数据库中

    在数据库中存储和检索 python 字典的最佳方法是什么 如果您对使用传统 SQL 数据库 例如 MySQL 不是特别感兴趣 您可以研究非结构化文档数据库 其中文档自然映射到 python 字典 例如MongoDB http www mon
  • 使用pip安装pylibmc时出错

    您好 当我尝试使用 pip 在 OSX Lion 上安装 pylibmc 时 出现以下错误 pylibmcmodule h 42 10 fatal error libmemcached memcached h file not found
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 是否可以在 Jupyter 笔记本中显示控制台?

    我希望能够使用 Jupyter 笔记本中的控制台在环境中进行摆弄 添加额外的单元格意味着我总是必须滚动到最底部或在我想要 类似控制台 文本字段的任何地方创建新单元格 是否可以有一个永久的控制台窗口 例如在窗口底部 Thanks 您可以启动连
  • 在 python 中使用 subprocess.call 时如何将 stdout 重定向到文件?

    我正在从另一个 python 脚本 A 调用一个 python 脚本 B 使用 subprocess call 如何将 B 的标准输出重定向到指定的文件 我正在使用 python 2 6 1 传递一个文件作为stdout参数为subproc
  • 模拟类:Mock() 还是 patch()?

    我在用mock http www voidspace org uk python mock index html使用Python 想知道这两种方法中哪一种更好 阅读 更Pythonic 方法一 只需创建一个模拟对象并使用它 代码如下 def
  • 尝试将 cuda 与 pytorch 一起使用时出现运行时错误 999

    我为我的 Geforce 2080 ti 安装了 Cuda 10 1 和最新的 Nvidia 驱动程序 我尝试运行一个基本脚本来测试 pytorch 是否正常工作 但出现以下错误 RuntimeError cuda runtime erro
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • 如何使用资源模块来衡量函数的运行时间?

    我想使用Python代码测量函数的CPU运行时间和挂钟运行时间 此处建议资源模块 如何以 Python 代码 不是从终端 的形式分别测量函数的 CPU 运行时间和挂钟运行时间 https stackoverflow com q 192046
  • Python 中的颜色处理

    对于我的聚类 GUI 我目前对聚类使用随机颜色 因为我事先不知道最终会得到多少个聚类 在 Python 中 这看起来像 import random def randomColor return random random random ra
  • Python 对列表中的值求和(如果它存在于另一个列表中)

    我有一个列表和一组 a list 1 2 2 1 1 1 b list 1 2 我正在寻找对应 b list 中的项目并将它们从 a list 中的值相加 以便输出为 1 3 2 1 我尝试过的 sum 0 for i in a list
  • 设置字符串中单词或字符数的限制

    假设我有一个字符串元素列表 wordlist hi what s up home diddle mc doo Oh wise master kakarot hello have a da 我希望列表中的每个元素最多包含 3 个单词或 20
  • 混合两个列表的Pythonic方法[重复]

    这个问题在这里已经有答案了 我有两个长度为 n 和 n 1 的列表 a 1 a 2 a n b 1 b 2 b n 1 我想要一个函数作为结果给出一个列表 其中包含两个中的替代元素 即 b 1 a 1 b n a n b n 1 以下方法有
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min
  • IOError:在 Linux 上的 ReportLab 中使用 matplotlib PNG 时“解码器 zip 不可用”,适用于 Windows

    我正在使用 ReportLab 打印 matplotlib 生成的图表 我可以在我的 Windows 开发机器上毫无问题地执行此操作 然而 当我部署到 Ubuntu 服务器时 渲染失败并出现所述错误 我假设我缺少一个 Python 模块 但

随机推荐

  • MySQL会自动优化子查询吗?

    我想运行以下查询 Main Query SELECT COUNT FROM table name WHERE device id IN SELECT DISTINCT device id FROM table name WHERE NAME
  • 覆盖默认的 Android 主题

    我已经能够覆盖任何名称前面带有 android 的主题 但 Android theme xml 还定义了似乎无法覆盖的属性 例如
  • 成员名称不能与分部类的封闭类型相同

    我定义了一个具有如下属性的分部类 public partial class Item public string this string key get if Fields null return null if Fields Contai
  • 在 sagemaker 中进行预测之前如何预处理输入数据?

    我正在使用 java Sagemaker SDK 调用 Sagemaker 端点 我发送的数据在模型可以使用它进行预测之前几乎不需要清理 我怎样才能在 Sagemaker 中做到这一点 我在 Jupyter 笔记本实例中有一个预处理功能 它
  • 相邻兄弟姐妹的边际崩溃

    我正在阅读有关保证金崩溃的文章 我发现了这一点 margin 相邻兄弟姐妹 相邻兄弟姐妹的边距折叠 除非后一个兄弟需要清除过去的浮动 我不明白最后一句话 除非后一个兄弟需要清除过去的浮动 有人可以举个例子吗 谢谢 首先 下面的示例仅适用于基
  • 输出两个单词之间的文本

    我想使用 PHP 输入某个文本 输出应该是两个单词之间的文本 澄清 Input Lorem ipsum dolor sit amet Output dolor sit str Lorem ipsum dolor sit amet word1
  • 调用仅在运行时已知的函数

    我想通过输入验证服务器来首次尝试 Rust 应用程序 该服务器可以验证 AJAX 请求中的值 这意味着我需要一种方法来使用 JSON 配置文件来根据输入值的名称以及可能在运行时在 HTTP 请求中传入的表单名称来指定使用哪些验证函数 我怎样
  • 无法在 Chrome 扩展程序中使用 jQuery 触发点击

    我试图用一行 jQuery 代码创建一个 Chrome 扩展 但它不起作用 我正在尝试触发对某个元素的点击 chrome的控制台根本没有显示任何错误 当我只将 jQuery 代码放入控制台时 它工作正常 My code 内容 js docu
  • Hibernate 5 更改为不使用仅获取第一行

    我正在使用带有 oracle 11 的 Hibernate 5 2 它不支持仅获取第一行 我需要回到旧样式的 hibernate 有没有休眠配置可以做到这一点 您可以强制 Hibernate 使用 Oracle 10g 方言 这样您将使用
  • 为什么更改总和顺序会返回不同的结果?

    为什么更改总和顺序会返回不同的结果 23 53 5 88 17 64 47 05 23 53 17 64 5 88 47 050000000000004 Both Java and JavaScript返回相同的结果 据我了解 由于浮点数以
  • eclipse中Android插件安装问题

    我正在尝试安装 ADT 插件 我转到 Help install new software in eclipse 然后选择开发工具后出现此错误 Cannot complete the install because one or more r
  • Django:通过外键字段的id进行查询的正确方法是什么?

    我有两个models class Organization models Model title models CharField max length 100 class Folder models Model organization
  • 有没有办法同时使用 GET 和 POST?

    我需要使用这两种方法一起传递一些数据 GET 和 POST 我写了这个方法 但不知道是否安全
  • firebase2.default.firestore 不是一个函数 - React Firebase

    我正在尝试使用火库在我的 Reactjs 应用程序中 当我从 firebase 配置对象调用 firestore 时 It says firebase2 default firestore 不是一个函数 这是代码 import fireba
  • 如何使匿名函数中的多个参数隐式?

    如果我们有一个接受匿名函数的方法A gt B作为参数 我们可以使A隐含在我们的调用中 def impl a Int f Int gt Int Int f a impl a implicit z gt 但是我们可以使用具有多个参数的匿名函数来
  • EclipseLink JPA“此上下文中的表无效”与@OneToMany Map

    我希望我只是在这里做了一些愚蠢的事情 我正在尝试为一个设置 JPA 注释Map
  • OpenCV 不规则形状的质心

    如何使用 OpenCV 获得不规则形状的质心 我建议看看简历 时刻 C 或 cvMoments C 函数 这个 StackOverflow 线程提供了一些与您的问题非常相似的示例代码 这个帖子讨论一些与寻找物体中心点相关的理论
  • Airflow 在同一 dag 中的不同时间运行任务?

    我在一个 dag 中有 30 个单独的任务 它们之间没有依赖关系 这些任务运行相同的代码 唯一的区别是数据量 有些任务会在几秒钟内完成 有些任务需要 2 小时或更长时间 问题是在追赶期间 在几秒钟内完成的任务会被需要几个小时才能完成才能进入
  • Jinja2 中的嵌套 For 循环

    我正在 Jinja Python Flask 中创建一个嵌套 for 循环 如果我对这些值进行硬编码 那么它就可以正常工作 我在 Jinja 模板中遗漏了什么吗 table class table table striped tr for
  • 如何更改 numpy 数组中的像素值

    我有一个大的 RGB 图像作为 numpy 数组 我想将所有具有 R 0 G 0 B 0 的像素设置为 R 255 G 0 B 0 最快的方法是什么 我试过 for pix in result if np all np logical an