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

news2024/10/3 10:36:30

如何使用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.读取像素值。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ImportError: cannot import name ‘contextfilter‘ from ‘jinja2‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

idea修改行号颜色

前言 i当idea用了深色主题后,发现行号根本看不清,或者很模糊 例如下面这样 修改行号颜色 在IntelliJ IDEA中,你可以根据自己的喜好和需求定制行号的颜色。下面是修改行号颜色的步骤: 打开 IntelliJ IDEA。 转到 “File”&…

浅谈WPF之各种Template

前几天写了一篇文章【浅谈WPF之控件模板和数据模板】,有粉丝反馈说这两种模板容易弄混,不知道什么时候该用控件模块,什么时候该用数据模板,以及template和itemtemplate之间的关系等,今天专门写一篇文章,简述…

【如何学习Python自动化测试】—— 多层窗口定位

6 、 多层窗口定位 多层窗口指的是在操作系统图形界面中,一个窗口被另一个窗口覆盖的情况。在多层窗口中,如何定位需要操作的窗口? 一种常见的方法是使用操作系统提供的AltTab快捷键,可以在打开的所有窗口中快速切换焦点。如果需要…

JVM垃圾回收相关算法

目录 一、前言 二、标记阶段:引用计数算法 三、标记阶段:可达性分析算法 (一)基本思路 (二)GC Roots对象 四、对象的finalization机制 五、MAT与JProfiler的GC Roots溯源 六、清除阶段:…

查看当前laravel版本三种方法(笔记二)

1、在终端中使用 Artisan 命令:在 Laravel 项目的根目录下,打开终端(命令行界面),然后运行以下命令: php artisan --version 2、控制器中打印版本 var_dump(app()->version()); 3、在 Laravel 项目的根目…

IDEA中 java: 警告: 源发行版 11 需要目标发行版 11 如何解决

步骤1找到项目结构,下面有两种方式 步骤2找到 模块中对应的项目,修改对应的源的语言级别和依赖的模块SDK(M) 步骤3,启动一下,看有无问题, 步骤4,去文件-->设置-->构建、执行、部署-->编译器-->…

品牌发力 · 韧性增长 | 数说故事亮相第30届中国国际广告节

11月16日-19日,由中国广告协会主办、厦门市政府支持的第30届中国国际广告节在厦门盛大举行。近千家参展企业和全国广告人、传媒人、品牌人相聚鹭岛,共同见证中国广告业的“高光时刻”。连续4天,20余场主题论坛分享会、12场大型活动、9项专业展…

【每日OJ —— 622. 设计循环队列】

每日OJ —— 622. 设计循环队列 1.题目:622. 设计循环队列2.解法2.1.解法讲解2.1.1.算法讲解2.1.2.代码实现2.1.3.提交通过展示 1.题目:622. 设计循环队列 2.解法 1.本题有很多解法:可以使用数组,单链表,双链表&#x…

SAP_ABAP_面试篇_关于Function Module函数的三种处理类型

关于 Function Module 这个技术点,在面试过程中一般会考察以下几个问题: 1 函数处理类型的更新模式 一般会问到异步和事务(逻辑单元 LUW),异步函数的调试方式、SM13监控更新函数的执行过程(V1 与 V2 模式…

基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码

基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蛇优化算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蛇优化优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

mysql中数据是如何被用B+树查询到的

innoDB是按照页为单位读写的 那页中有很多行数据,是怎么执行查询的呢,首先我们肯定,是以单向列表形式存储的,提高了增删的效率,但是查询效率低。所以实际上对页中的行数据进行了优化,能以二分的方式进行查…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(1)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护 …

一套开源、强大且美观的WPF UI控件库 - HandyControl

前言 今天给大家推荐一套开源、强大且美观的WPF UI控件库:HandyControl。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创…

外网IP和内网ip的区别

首先得先知道什么是ip地址,它就是唯一标识连接网络的设备的,即IP地址充当了设备在网络中的“住址”,使得设备能够相互通信和交换数据。 我们常听开发人员说外网内网,那么它们有什么区别呢? 外网可以理解为互联网&…

如何在Ubuntu的Linux系统中安装MySQL5.7数据库

前往MySQL数据库官网链接地址下载5.7数据库。 MySQL :: Download MySQL Community Server (Archived Versions)使用ssh的可视化工具将下载的mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz文件上传到Linux服务器,并解压文件 tar -zxvf mysql-5.7.40-linux-glibc2.12-x…

c++学习之哈希

目录 1.关于unordered系列关联式容器 2.关于unordered_map 3.哈希(散列)表的实现 一,直接定址法 二,除留余数法 方法一:闭散列:开放定址法 方法二:闭散列:哈希桶/拉链法 4.哈希…

【python】python旅游网数据抓取分析(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

智能小车速通版——手把手教程

考虑到大部分学校,会发放简易小车来作为智能车初期培训和筛选的工具, 于是,我写一个简单的教程,能够实现简单小车的电磁循迹。 通过这个教程,能够通过简化的步骤搭建寻迹小车,进而了解整个智能车是如何实…

【C++】:STL中的string类的增删查改的底层模拟实现

本篇博客仅仅实现存储字符(串)的string 同时由于Cstring库设计的不合理,我仅实现一些最常见的增删查改接口 接下来给出的接口都是基于以下框架: private:char* _str;//思考如何不用constsize_t _size;size_t _capacity;//这样写可以const static size_t…