使用 Python脚本在3DMAX中加载图像和读取图像中的像素值

如何使用Python在3dmax中加载和显示图像文件?我们先看下面的代码:

*测试的3dmax文件和图像文件位于同一目录中。

from MaxPlus import BitmapManager

image_file_path = r'je_gray_02_4k.exr'

bmp_storage = MaxPlus.Factory.CreateStorage(17)

bmp_info = bmp_storage.GetBitmapInfo()

bmp_info.SetName(image_file_path)

bmp = BitmapManager.Load(bmp_info)

bmp.Display()

打开3dmax,点击3dmax主菜单->脚本->新建脚本,将上面的Python代码复制粘贴到MAXScript脚本编辑器窗口中,点击脚本编辑器窗口上面的“语言”菜单,选择“Python”。然后,同时按下“Ctrl+e”键执行Python脚本,运行结果如下图:    

下面一步一步解释上面的脚本:

1.导入加载图像文件所需的BitmapManager类。

2.设置包含图像文件路径的变量

3.呼叫MaxPlus。Factory类的CreateStorage方法来启动BitmapStorage对象。

这太尴尬了。。

很可能我只是没有找到正确的方法。。

除了启动BitmapStorage对象并引用其BitmapInfo对象外,貌似找不到任何其他方法来独立启动加载图像所需的BitmapInfo。(BitmapInfo类没有构造函数。)

4.获取对BitmapStorage对象中包含的BitmapInfo对象的引用。

5.设置BitmapInfo对象的名称属性(完整文件路径)。

6.加载图像。

7.在3dmax的图像查看器窗口中显示图像。

下面是BitmapStorage格式常量容器类的示例代码:

class BitmapTypes(object):

     BMM_NO_TYPE = 0 # Not allocated yet

     BMM_LINE_ART = 1 # 1-bit monochrome image

     BMM_PALETTED = 2 # 8-bit paletted image. Each pixel value is an index into the color table.

     BMM_GRAY_8 = 3 # 8-bit grayscale bitmap.

     BMM_GRAY_16 = 4 # 16-bit grayscale bitmap.

     BMM_TRUE_16 = 5 # 16-bit true color image.

     BMM_TRUE_32 = 6 # 32-bit color: 8 bits each for Red, Green, Blue, and Alpha.    

     BMM_TRUE_64 = 7 # 64-bit color: 16 bits each for Red, Green, Blue, and Alpha.

     BMM_TRUE_24 = 8 # 24-bit color: 8 bits each for Red, Green, and Blue. Cannot be written to.

     BMM_TRUE_48 = 9 # 48-bit color: 16 bits each for Red, Green, and Blue. Cannot be written to.

     BMM_YUV_422 = 10 # This is the YUV format - CCIR 601. Cannot be written to.

     BMM_BMP_4 = 11 # Windows BMP 16-bit color bitmap. Cannot be written to.

     BMM_PAD_24 = 12 # Padded 24-bit (in a 32 bit register). Cannot be written to.

     BMM_LOGLUV_32 = 13 BMM_LOGLUV_24 = 14

     BMM_LOGLUV_24A = 15 BMM_REALPIX_32 = 16 # The 'Real Pixel' format.

     BMM_FLOAT_RGBA_32 = 17 # 32-bit floating-point per component (non-compressed),

     RGB with or without alpha

     BMM_FLOAT_GRAY_32 = 18 # 32-bit floating-point (non-compressed), monochrome/grayscale

     BMM_FLOAT_RGB_32 = 19

     BMM_FLOAT_A_32 = 20

如何从图像中读取像素值?看下面的Python代码:

bmp_storage = bmp.GetStorage()

hdr_pixel = bmp_storage.GetHDRPixel(3000,200)

print(hdr_pixel)

将这段代码追加到之前代码的末尾,完整代码如下:

from MaxPlus import BitmapManager

image_file_path = r'je_gray_02_4k.exr'

bmp_storage = MaxPlus.Factory.CreateStorage(17)

bmp_info = bmp_storage.GetBitmapInfo()

bmp_info.SetName(image_file_path)

bmp = BitmapManager.Load(bmp_info)

bmp.Display()

          

#reading pixels

bmp_storage = bmp.GetStorage()

hdr_pixel = bmp_storage.GetHDRPixel(3000,200)

print(hdr_pixel)

执行Python代码,结果如下:    

代码释义:

1.获取对位图的BitmapStorage对象的引用。

*在这种情况下,重写我们之前创建的BitmapStorage对象只是为了获得BitmapInfo对象。。

2.读取像素值。

提示:复制和粘贴此示例中的脚本时,请注意格式的缩进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/179504.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高斯Filter 和 Bilateral Filter

参考链接: Python | Bilateral Filtering - GeeksforGeeks 高斯Filter: 高斯模糊后的图像中的每个像素的强度是由它周围的像素的加权平均得到的,这个权重就是高斯函数的值,它取决于像素之间的距离。具体来说: 通常会导…

【追求卓越11】算法--二叉树

引导 接下来的几节我们开始介绍非线性的数据结构--树。树的内容比较多也比较复杂。本节,我们只需要了解关于树的一些基本概念。以及再进一步了解树的相关内容--搜索二叉树。该类型二叉树在工作中,是我们常接触的。该节我们介绍关于搜索二叉树的相关操作&…

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:分区域汇总&#xff1a…

opencv-图像金字塔

图像金字塔是一种图像处理技术,它通过不断降低图像的分辨率,形成一系列图像。金字塔分为两种类型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通过使用高斯滤波和降采样&a…

计算机网络之概述

一、概述 1.1因特网概述 定义 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)因此,互联网是“网络的网络…

企业该怎么选择IP证书

IP证书是一种数字证书,它由权威的数字证书颁发机构(CA)颁发,部署在只有公网IP地址的站点上,用于在网络中验证身份和保护信息安全。IP证书可以在各种场景下保护网站的信息安全,比如网站vip登录,线…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎,轻量级容器技术。基于Go语言,并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化容…

【计算机基础】通过插件plantuml,实现在VScode里面绘制状态机

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

DockerHub 无法访问 - 解决办法

背景 DockerHub 镜像仓库地址 https://hub.docker.com/ 突然就无法访问了,且截至今日(2023/11)还无法访问。 这对我们来说,还是有一些影响的: ● 虽然 DockerHub 页面无法访问,但是还是可以下载镜像的,只是比较慢而已 ● 没法通过界面查询相关镜像,或者维护相关镜像了…

2023年最佳Aspera替代方案,选择适合的Aspera替代方案

查找当前可用的Aspera替代方案。比较 2023年Aspera替代方案的评级、评论、定价和功能。列出了市场上最好的Aspera替代方案,它们提供与 IBM Aspera 类似的竞争产品。对下面的Aspera替代方案进行排序,以根据需求做出最佳选择。 1、镭速 镭速(私…

【追求卓越02】数据结构--链表

引导 今天我们进入链表的学习,我相信大家对链表都很熟悉。链表和数组一样,作为最基础的数据结构。在我们的工作中常常会使用到。但是我们真的了解到数组和链表的区别吗?什么时候使用数组,什么时候使用链表,能够正确的选…

笔记本外接显示器的一些基本操作

1>,安装问题直接问客服,正常情况是将显示屏接上电源,然后用先将显示屏和笔记本的HDMI接口连接即可。 按下组合键 win p ,选择 “复制”。 2>,接上显示屏后,原笔记本无声音? 1、找到笔记本电脑右下…

通过Everything 建立HTTP服务器时指定文件夹共享

在局域网传输文件,高效传输,不限文件大小 1、安装Everything 2、在Everything开启HTTP服务 【工具】—>>【选项】—>>【HTTP服务】启用HTTP服务器,设置HTTP服务器用户名和密码 3、查看网络信息 打开服务端电脑的【命令提示…

低权限(无权限)时如何在mysql客户端控制台的大量输出中快速定位mysql死锁或慢sql

查看mysql的查看死锁的方式很多,但很多时候我们普通开发者的权限比较低,无法执行某命令。比如本次就准备使用 SHOW ENGINE INNODB STATUS;命令,但客户端提示权限不够。后来本人找到了另一条低权限的命令 show full PROCESSLIST;但是show fu…

CST同轴馈电步骤

CST同轴馈电步骤 算例1. 同轴内芯2. 填充材料3. 外皮4. GND减去一个圆形,使EMWAVE可以通过5. 添加端口6. 结果比较 算例 cst模型库中的一个圆贴片 1. 同轴内芯 2. 填充材料 他这里直接使用和介质基板一样的材料并且进行了合并,我就懒得再改了&#x…

Matplotlib颜色条的配置_Python数据分析与可视化

Matplotlib颜色条配置 基本颜色颜色条选择配色方案颜色条刻度的限制与扩展功能的设置离散型颜色条 基本颜色 Matplotlib提供了8种指定颜色的方法: 在[0,1]中的浮点值的RGB或RGBA元组(例如 (0.1, 0.2, 0.5) 或(0.1, 0.…

3D电路板在线渲染案例

从概念上讲,这是有道理的,因为PCB印制电路板上的走线从一个连接到下一个连接的路线基本上是平面的。 然而,我们生活在一个 3 维世界中,能够以这种方式可视化电路以及相应的组件,对于设计过程很有帮助。本文将介绍KiCad中基本的3D查看功能,以及如何使用NSDT 3DConvert在线…

PHP中间件实现

目录 1、简单中间实现 2、使用闭包函数实现中间件 在PHP中,中间件是一种常用的设计模式,用于处理请求和响应,它可以在请求到达目标处理程序之前或响应发送给客户端之前执行一些特定的逻辑。中间件提供了一种灵活的方式来修改或扩展应用程序的…

数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例

MongoDB数据库数据恢复环境: 一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库。 MongoDB数据库故障&检测: 在未关闭MongoDB服务的情况下,工作人员将MongoDB数据库文件拷贝到其他分区,然后将原数…

Dubbo从入门到上天系列第十八篇:Dubbo引入Zookeeper等注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

文章目录 一:Dubbo注册中心引言 1:什么是Dubbo的注册中心? 2:注册中心关系图解 3:引入注册中心服务执行流程 4:Dubbo注册中心好处 5:注册中心核心作用 二:注册中心实现方案 …