如何在mayavi(imshow)中绘制彩色图像

2024-01-05

是否可以使用mayavi绘制具有3个颜色通道的图像?根据 mayavi 的文档,mayavi.mlab.imshow只能处理形状为 (n x m) 的图像。


Method

我必须使用 Mayavi 的自定义色彩图,请参阅http://docs.enthought.com/mayavi/mayavi/auto/example_custom_colormap.html http://docs.enthought.com/mayavi/mayavi/auto/example_custom_colormap.html .

我制作了一个颜色图,其中包含原始 (n x m x 3) 图像中的所有像素作为行。我还添加了一个 alpha 通道,以便透明 png 可以正确显示。接下来,我使用灰度图像作为查找表,将像素值作为存储在颜色图中的原始像素的索引。我使用查找表创建了一个 imshow 对象作为输入图像,并用我的自定义颜色图替换了 imshow 对象的颜色图。

Code

对于感兴趣的人来说,这是一些带有测试用例的工作代码。除 pl.imread(...) 处的测试用例外,Pylab 可以在任何地方替换为 Numpy(Pylab 包装 Numpy)。在 Windows 7 上使用 Mayavi 4.3.0 在 Python2.7 上进行了测试。(不幸的是,我必须首先修复 Windows 上的以下 Mayavi 错误https://github.com/enthought/mayavi/pull/96/files https://github.com/enthought/mayavi/pull/96/files).

import pylab as pl
from mayavi import mlab

def mlab_imshowColor(im, alpha=255, **kwargs):
    """
    Plot a color image with mayavi.mlab.imshow.
    im is a ndarray with dim (n, m, 3) and scale (0->255]
    alpha is a single number or a ndarray with dim (n*m) and scale (0->255]
    **kwargs is passed onto mayavi.mlab.imshow(..., **kwargs)
    """
    try:
        alpha[0]
    except:
        alpha = pl.ones(im.shape[0] * im.shape[1]) * alpha
    if len(alpha.shape) != 1:
        alpha = alpha.flatten()

    # The lut is a Nx4 array, with the columns representing RGBA
    # (red, green, blue, alpha) coded with integers going from 0 to 255,
    # we create it by stacking all the pixles (r,g,b,alpha) as rows.
    myLut = pl.c_[im.reshape(-1, 3), alpha]
    myLutLookupArray = pl.arange(im.shape[0] * im.shape[1]).reshape(im.shape[0], im.shape[1])

    #We can display an color image by using mlab.imshow, a lut color list and a lut lookup table.
    theImshow = mlab.imshow(myLutLookupArray, colormap='binary', **kwargs) #temporary colormap
    theImshow.module_manager.scalar_lut_manager.lut.table = myLut
    mlab.draw()

    return theImshow

def test_mlab_imshowColor():
    """
    Test if mlab_imshowColor displays correctly by plotting the wikipedia png example image
    """

    #load a png with a scale 0->1 and four color channels (an extra alpha channel for transparency).
    from urllib import urlopen
    url = 'http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png'
    im = pl.imread(urlopen(url), format='png')
    im *= 255

    mlab_imshowColor(im[:, :, :3], im[:, :, -1])

    mlab.points3d([-200, 300, -200, 300],
                  [-200, 300, 200, -300],
                  [300, 300, 300, 300])
    mlab.show()

if __name__ == "__main__":
    test_mlab_imshowColor()

Results

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

如何在mayavi(imshow)中绘制彩色图像 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M

随机推荐

  • Jshint.com |分配给'this'

    每当我这样做时都会在 jshint com 上 var this hold this 我收到一个错误 我收到违反严格错误 该应用程序是这样的 我需要使用 this 从事件处理程序传入 或者我需要使用自己拉取元素document getEle
  • C++ 11 模板,参数包的别名

    在个人项目中我有这样的事情 template
  • Kendo Grid 的动态默认值

    我想要一个auto increment我的剑道网格中的列 该字段不是服务器端自动增量 因为我希望用户看到该值并能够更改它 我当前的解决方案是添加一个click归因于Create按钮并循环遍历行以找到最高值并递增它 但是如何将该值插入到新创建
  • std::map 在 [] 上调用默认构造函数,在 insert() 上调用复制构造函数

    我的 std map 称为uniformBlocks 当我注意到一些奇怪的事情时 我正在测试添加新元素的方法 当我使用以下方法添加新的键 值对时 uniformBlocks MatrixBlock matrixBlock 调用默认构造函数
  • java.io.StreamCorruptedException:无效的流头:EFBFBDEF

    我正在开发一个java web应用程序 我在其中使用类似于maven的项目管理工具 现在我对这个问题变得疯狂 我尝试从我的应用程序构建一个 jasper 报告 该报告由 src main resources 中的许多子报告组成 我尝试通过以
  • 将 Git 项目推送到本地目录

    不知道这是否在 Git 中得到完全支持 如果是的话那就太好了 因为它可以让事情变得更容易 基本上我有一个项目正在文件夹 X 中工作 当我把它带到一个特定的阶段时 我想推动它再次将其复制到我计算机上的文件夹 Y 中 如果这是可能的 那就更好了
  • Spotify 白名单 URI 仍然返回 { "error": "invalid_grant", "error_description": "无效的重定向 URI" }

    我知道已经有类似的问题了 但所有的答案大多是 哦 我忘了在末尾加斜线 但这绝对让我发疯 我试图从 Spotify API 获取访问令牌 但我不断收到无效的重定向 uri 错误 这是我的 api 调用 const request requir
  • jQuery:检查鼠标是否位于动画上方?

    这几乎就是我正在做的事情 https jsfiddle net atg5m6ym 2625 https jsfiddle net atg5m6ym 2625 我使用 jQuery 为 div 制作动画以向左移动 然后当我将鼠标悬停在 div
  • Jackson - 在运行时解析相同密钥下的不同模型

    我有来自服务器的特定 json 响应 其中在一个密钥下 内容将是不同的模型 而且一次只有一个模型数据会出现在该密钥下 在将响应解析为 POJO 时 如何根据同一模型上 contentType 的其他字段在运行时指定对象类型 以下是为了更好地
  • 使用不带动画功能的 matplotlib 进行动画处理

    有没有一种方法可以在 matplotlib 中对图形进行动画处理 而无需借助内置的动画函数 我发现它们使用起来非常尴尬 并且觉得只绘制一个点 擦除图表 然后绘制下一个点会简单得多 我设想的是这样的事情 def f do stuff here
  • r Markdown 的 Yaml 标头中的单引号和双引号有什么区别?

    我在 RStudio 中使用 knit 编译的 r Markdown 文件中遇到错误 我不太确定这个 错误 应该指向哪里 这似乎并不是一个 R 错误 如果我使用以下 YAML 标头内容创建 R markdown 文档 我可以很好地编织该文件
  • winsock中的异步地址解析?

    查看winsock中的异步地址解析 似乎唯一的两个选择是使用阻塞gethostbyname在单独的线程上 或使用WSAAsyncGetHostByName 出于某种原因 后者被设计为处理窗口消息 而不是重叠操作和完成端口 例程 有没有什么版
  • Python Mechanize 选择表单 FormNotFoundError

    我想选择带有机械化的形式 这是我的代码 br mechanize Browser self br open url br select form name login form 表格的代码
  • 在 C++ 中不打开文件检查文件大小?

    我正在尝试获取大文件 12gb 的文件大小 但我不想打开该文件来执行此操作 因为我认为这会消耗大量资源 有没有什么好的API可以做到这一点 我是在Windows环境下 你应该打电话GetFileSizeEx http msdn micros
  • 如何使用numpy生成分段间隔上的随机数

    我正在 python 中使用 numpy 模块来生成随机数 当我需要生成连续区间的随机数如 a b 时 我会使用 b a np random rand 1 a 但现在我需要生成区间 a b 和 c d 内的均匀随机数 我该怎么办 我想生成一
  • ConnectNamedPipe 和 asio 重叠的 ptr

    我将管道服务器命名为使用 boost asio 编写的 服务器创建命名管道并调用 ConnectNamedPipe 将 asio 重叠 ptr 传递给它 问题是传递给 asiooverlaped 的完成处理程序永远不会被调用 即在客户端调用
  • 如何在android studio中启用版本控制窗口

    对于我的某些分支 我无法获得版本控制窗口 例如 如果我进入分支develop 然后窗口显示 如果我进入master它已经消失了 我无能为力把它找回来 我试图通过从开发到掌握来欺骗它 但一旦我掌握了 它又消失了 该问题相对较新 7 天 过去不
  • 为什么 Scala 案例类字段不反映为公共字段?

    我一直将案例类的构造函数参数理解为定义公共值 但是 当我反映这些字段时 isPublic 方法出现错误 有什么想法吗 scala gt class Test val name String val num Int defined class
  • 自定义 Ansible 回调未接收 group_vars/host_vars

    我正在编写一个自定义的 ansible 回调 class CallbackModule CallbackBase CALLBACK VERSION 2 0 CALLBACK TYPE aggregate CALLBACK NAME my c
  • 如何在mayavi(imshow)中绘制彩色图像

    是否可以使用mayavi绘制具有3个颜色通道的图像 根据 mayavi 的文档 mayavi mlab imshow只能处理形状为 n x m 的图像 Method 我必须使用 Mayavi 的自定义色彩图 请参阅http docs ent