Metashape,之前也叫做Photoscan,提供了python接口,可以使用python脚本来进行自动化处理。但是目前这方面的资料实在是比较少,可能是因为大部分人都习惯使用界面来进行操作吧,但其实在很多场合下,使用python脚本进行自动化处理能极大地提高工作效率(针对某些流程比较固定的任务)。所以,我通过读官方的文档自己摸索了一些非常基本的脚本操作。

首先先说明一下,Metashape调用python脚本有三种方式:

  1. 在软件内部调用(这个最简单)
  2. 在软件外部使用metashape.exe调用(详见Metashape在软件外面调用python脚本)
  3. 使用stand-alone module进行编写并调用(这个需要license)

但无论你用哪种调用方式,其基本的代码流程是差不多的。

import Metashape#实例化一个chunk对象
doc=Metashape.app.document
chunk=doc.addChunk()    #在软件外部调用,软件没打开,那么就不存在chunk,必须添加一个。
#chunk=doc.chunk        #在软件内部调用,因为打开软件后其实一个chunk就已经被激活了。#添加照片
chunk.addPhotos(list[string]) #伪代码,参数为一个存放照片路径字符串的list对象#判断版本,1.5和1.6某些函数的参数不同,如果想改变重建的质量,1.6版本需要改变downscal参数的值,1为最高质量。
major_version = ".".join(Metashape.app.version.split('.')[:2])if version=='1.5':#匹配chunk.matchPhotos(accuracy=Metashape.MediumAccuracy, generic_preselection=True,reference_preselection=False)#建立深度图chunk.buildDepthMaps(quality=Metashape.HighQuality, filter=Metashape.AggressiveFiltering)
if version=='1.6':#匹配chunk.matchPhotos(downscale=1,generic_preselection=True,reference_preselection=False)#建立深度图chunk.buildDepthMaps(downscale=1, filter_mode=Metashape.AggressiveFiltering)#点云重建
chunk.buildDenseCloud()#构建模型
chunk.buildModel(surface_type=Metashape.Arbitrary, interpolation=Metashape.EnabledInterpolation)#UV分解
chunk.buildUV(mapping_mode=Metashape.GenericMapping)#纹理贴图
chunk.buildTexture(blending_mode=Metashape.MosaicBlending, texture_size=4096)#保存项目
doc.save(path = "project.psz", chunks = [doc.chunk])

这段代码就是大概的整个流程,但是注意,上面的代码现在还跑不起来,因为没有相关的照片,所以里面没有照片路径。大家可以参照这个并结合官方的文档编写自己的脚本。

对于已有的项目,官方文档给出的代码是这样的:

如果你有自己的项目,可以试试这段代码(不过要注意版本区别,在我的代码里面给了说明)

另外,刚开始可以在软件内部试着调用一下脚本看看效果,调用方法如下:

大概的流程就是这样,如果你的脚本里导入了其它的python包,那么你需要将这些包也安装到Metashape自带的python环境中。具体方法参考:https://blog.csdn.net/qq_41475842/article/details/107243856

如何编写Metashape(Photoscan) python脚本相关推荐

  1. pymol中编写和运行python脚本

    pymol中编写和运行python脚本 0.说明 简单介绍pymol中调用python脚本,后续把详细的图片更新.(2021年9月13日) 后续相关更新会直接粘贴到文件中. 1. 编写功能 批量读取本 ...

  2. python 没反应 生成exe_通过 pyinstaller 将 python 脚本打包成可执行程序!

    1. 引言 很多时候,我们需要在 windows 环境编写和执行 python 脚本,但是去搭建一整套 python 运行环境看上去就过于繁琐了,即便是拥有 python 运行环境,脚本的执行也并不方 ...

  3. python minimize_简单三步实现Python脚本超参数调优(附代码)

    作者:Jakub Czakon, Neptune.ai 翻译:陈之炎 校对:和中华 本文约1500字,建议阅读5分钟. Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个 ...

  4. 独家 | 简单三步实现Python脚本超参数调优(附代码)

    作者:Jakub Czakon, Neptune.ai 翻译:陈之炎 校对:和中华 本文约1500字,建议阅读5分钟. Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个 ...

  5. python脚本在linux上运行的两种方式_python脚本当作Linux中的服务启动实现方法

    脚本服务化目的: python 在 文本处理中有着广泛的应用,为了满足文本数据的获取,会每天运行一些爬虫抓取数据.但是网上买的服务器会不定时进行维护,服务器会被重启.这样我们的爬虫服务就无法运行.这个 ...

  6. centos 自动运行python脚本,centos配置 Python 定时任务

    centos 实现自动运行 Python 脚本 正式配置前,先编写一段 Python 脚本,实现日志写入文件操作 import os import sys import loggingcurrent_ ...

  7. 玩转Python脚本开发-01

    Python概述 Python 由 属于解释性语言, 不产生机器代码, 会生产字节码通过字节码来执行.目前python 官网有python2.x 和 python3.x 版本, 两个版本区别较大.推荐 ...

  8. 【Python实用技巧】如何将Python脚本打包成exe可执行文件?

    相信大家也有过这样的困惑,本来已经使用Python写好了脚本代码,又不想公开代码逻辑,但又要给别人使用这些功能? 这可怎么办呢? 有没有什么办法,可以将Python脚本打包成一个exe文件,这样发布的 ...

  9. python catia_使用Python脚本的CATIA V5自动化

    我是一个Python初学者,正试图用它在CATIA(Dassault Systemes CAD package)中实现一些自动化,但我遇到了一个问题,尽管我广泛地寻找解决方案,但我还是无法解决.在 我 ...

最新文章

  1. Java 异常基础 Exception
  2. linux数据被删了怎么办
  3. 装了linux开机出现错误,[已解决]安装完,启动出现错误!
  4. Node.js框架之Egg.js
  5. matlab图像模糊处理
  6. MySQL可视化工具之SQLyog小海豚
  7. 计算机在材料研究的应用,计算机在材料工程中的应用
  8. CCD相机参数基本知识
  9. ADF11g-041:禁止或允许其它网站添加ADF页面到iframe中
  10. 32/64位处理器、操作系统、应用程序和库之间有什么关系?
  11. 机器学习sklearn----通过轮廓系数确定适合的n_clusters
  12. 【⚠️windows删除文件夹抽风了⚠️】“错误0x80070091:目录不是空的”问题处理
  13. linux下磁带备份
  14. 【解决方案】adb无法连接雷电模拟器问题
  15. jQuery 实现贪吃蛇游戏
  16. javaScript简单项目案例
  17. 数值优化:一阶和二阶优化算法(Pytorch实现)
  18. android10.0 bootanimation系统高仿Iphone苹果开机动画
  19. 我的投资观和投资方法
  20. 物流自动化分拣系统信息体系架构

热门文章

  1. 产业升级浪潮下,道元实业如何带领半导体料盘包装工序走向自动化变革
  2. 设多个闹钟反复惊醒可致慢性疲劳?!央视:建议一次性起床
  3. 软件测试面试两个月,我是如何找到工作的?面试总结分享给大家
  4. go vet 报错:xx_xx passes lock by value: sync.Map contains sync.Mutex; call of xx_xx copies lock value
  5. python pexpect timeout_python pexpect模块
  6. js,jq表格/文本内容溢出,用三个点替代,鼠标悬停时显示全部内容
  7. SOLIDWORKS 30个使用技巧
  8. alert日志中出现Private Strand Flush Not Complete的处理方法
  9. C#获取Excel表格所有sheet名(Epplus)
  10. Expires:Thu, 19 Nov 1981 08:52:00 GMT