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

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

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

from MaxPlus import BitmapManagerimage_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 yetBMM_LINE_ART = 1 # 1-bit monochrome imageBMM_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 = 14BMM_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 alphaBMM_FLOAT_GRAY_32 = 18 # 32-bit floating-point (non-compressed), monochrome/grayscaleBMM_FLOAT_RGB_32 = 19BMM_FLOAT_A_32 = 20

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

bmp_storage = bmp.GetStorage()hdr_pixel = bmp_storage.GetHDRPixel(3000,200)print(hdr_pixel)

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

from MaxPlus import BitmapManagerimage_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 pixelsbmp_storage = bmp.GetStorage()hdr_pixel = bmp_storage.GetHDRPixel(3000,200)print(hdr_pixel)

执行Python代码,结果如下:    

代码释义:

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

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

2.读取像素值。

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.HTML中列表标签

7.列表标签 7.1无序列表(重点) 表格是用来显示数据的,那么列表就是用来布局的。 列表最大的特点就是整齐,整洁,有序,他作为布局会更加自由和方便, 根据使用的情景不同,列表可分为三…

O2OA(翱途)开发平台 V8.2已发布,更安全、更高效、更开放

尊敬的 O2OA (翱途) 平台合作伙伴、用户以及亲爱的开发小伙伴们,V8.2 版本已正式发布,大家可以去官网上下载最新版本。 上次 8.1 的发布是在 9 月 1 日,又过去两个多月,O2OA 研发团队始终踏踏实实地做好产品的研发及优化工作&…

城市生命线下低洼地区怎么进行内涝积水监测?

城市里要是下大雨,低洼地区容易出现积水过多的情况,给我们生活带来很多不方便。但是如果有了内涝积水监测仪,城市就可以更加安全。这个监测仪可以实时监测积水的情况,在暴雨来临时及时发出预警,这样人们就可以避免因为…

自动化发展趋势以及自动化测试常见问题解析

前言 ⾃动化接⼝测试会越来越受到重视 在移动互联⽹时代,对于质量的要求⽐PC时代⾼的多,⽽投⼊产出⽐最⾼的⾃动化接⼝测试,将会是⼤部分公司的⾸选⽅向,但需要严格掌握⼀门语⾔ 持续集成是⽬前⾮常流⾏的开发⽅式,…

c语言打印金字塔

输入行数n,打印n行的金字塔。如图: 先分析其规律。 打印n行,即外层循环n次。再分析每一层的规律,先具体化举例,举一个行数为5的金字塔。可以发现每一行前面的空格呈递减趋势,且与行数有关系:空格数行数-层…

基于java和uniapp的即时聊天源码

聊天IM,支持单聊、群聊、朋友圈、摇一摇、附近的人、收藏、扫码、机器人、文字、图片、名片、实时音视频通话等功能。用uniapp开发,支持打包成多终端! 推送:uniPush websocket资源:阿里OSS(图片、声音、视…

Windows平台如何实现RTSP流二次编码并添加动态水印后推送RTMP或轻量级RTSP服务

技术背景 我们在对接RTSP播放器相关的技术诉求的时候,遇到这样的需求,客户做特种设备巡检的,需要把摄像头拍到的RTSP流拉下来,然后添加动态水印后,再生成新的RTSP URL,供平台调用。真个流程需要延迟尽可能…

Redis入门指南学习笔记(3):Redis高级特性

一.前言 上一篇博客对Redis常用的数据结构进行了详细介绍。Redis除了丰富的数据类型支持,还包含许多高级特性,例如事务、内存驻留策略、排序、消息队列等,本文将对这些进行逐一介绍。 二.事务 Redis同样包含事务(transaction&a…

ETL-使用kettle批量复制sqlserver数据到mysql数据库

文章标题 1、安装sqlserver数据库2、下载kettle3、业务分析4、详细流程(1)转换1:获取sqlserver所有表格名字,将记录复制到结果(2)转换2:从结果设置变量(3)转换3&#xff…

超详细!新手必看!STM32-通用定时器简介与知识点概括

一、通用定时器的功能 在基本定时器功能的基础上新增功能: 通用定时器有4个独立通道,且每个通道都可以用于下面功能。 (1)输入捕获:测量输入信号的周期和占空比等。 (2)输出比较:产…

SSH连接远程服务器报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 解决方法

一.错误描述 报错信息里提示了路径信息/root/.ssh/known_hosts:20 二.解决方案 方法一 输入以下指令: ssh-keygen -R XXX(需要连接远程服务器的ip) 按照我的例子ip:10.165.7.136,会返回以下信息: 重新尝试连接: 输…

2023年【安全生产监管人员】考试题及安全生产监管人员找解析

题库来源:安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题参考答案及安全生产监管人员考试试题解析是安全生产模拟考试一点通题库老师及安全生产监管人员操作证已考过的学员汇总,相对有效帮助安全生产监管人员找解析学员顺利通过考试。 1、…