如何编写Metashape(Photoscan) python脚本
Metashape,之前也叫做Photoscan,提供了python接口,可以使用python脚本来进行自动化处理。但是目前这方面的资料实在是比较少,可能是因为大部分人都习惯使用界面来进行操作吧,但其实在很多场合下,使用python脚本进行自动化处理能极大地提高工作效率(针对某些流程比较固定的任务)。所以,我通过读官方的文档自己摸索了一些非常基本的脚本操作。
首先先说明一下,Metashape调用python脚本有三种方式:
- 在软件内部调用(这个最简单)
- 在软件外部使用metashape.exe调用(详见Metashape在软件外面调用python脚本)
- 使用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脚本相关推荐
- pymol中编写和运行python脚本
pymol中编写和运行python脚本 0.说明 简单介绍pymol中调用python脚本,后续把详细的图片更新.(2021年9月13日) 后续相关更新会直接粘贴到文件中. 1. 编写功能 批量读取本 ...
- python 没反应 生成exe_通过 pyinstaller 将 python 脚本打包成可执行程序!
1. 引言 很多时候,我们需要在 windows 环境编写和执行 python 脚本,但是去搭建一整套 python 运行环境看上去就过于繁琐了,即便是拥有 python 运行环境,脚本的执行也并不方 ...
- python minimize_简单三步实现Python脚本超参数调优(附代码)
作者:Jakub Czakon, Neptune.ai 翻译:陈之炎 校对:和中华 本文约1500字,建议阅读5分钟. Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个 ...
- 独家 | 简单三步实现Python脚本超参数调优(附代码)
作者:Jakub Czakon, Neptune.ai 翻译:陈之炎 校对:和中华 本文约1500字,建议阅读5分钟. Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个 ...
- python脚本在linux上运行的两种方式_python脚本当作Linux中的服务启动实现方法
脚本服务化目的: python 在 文本处理中有着广泛的应用,为了满足文本数据的获取,会每天运行一些爬虫抓取数据.但是网上买的服务器会不定时进行维护,服务器会被重启.这样我们的爬虫服务就无法运行.这个 ...
- centos 自动运行python脚本,centos配置 Python 定时任务
centos 实现自动运行 Python 脚本 正式配置前,先编写一段 Python 脚本,实现日志写入文件操作 import os import sys import loggingcurrent_ ...
- 玩转Python脚本开发-01
Python概述 Python 由 属于解释性语言, 不产生机器代码, 会生产字节码通过字节码来执行.目前python 官网有python2.x 和 python3.x 版本, 两个版本区别较大.推荐 ...
- 【Python实用技巧】如何将Python脚本打包成exe可执行文件?
相信大家也有过这样的困惑,本来已经使用Python写好了脚本代码,又不想公开代码逻辑,但又要给别人使用这些功能? 这可怎么办呢? 有没有什么办法,可以将Python脚本打包成一个exe文件,这样发布的 ...
- python catia_使用Python脚本的CATIA V5自动化
我是一个Python初学者,正试图用它在CATIA(Dassault Systemes CAD package)中实现一些自动化,但我遇到了一个问题,尽管我广泛地寻找解决方案,但我还是无法解决.在 我 ...
最新文章
- Java 异常基础 Exception
- linux数据被删了怎么办
- 装了linux开机出现错误,[已解决]安装完,启动出现错误!
- Node.js框架之Egg.js
- matlab图像模糊处理
- MySQL可视化工具之SQLyog小海豚
- 计算机在材料研究的应用,计算机在材料工程中的应用
- CCD相机参数基本知识
- ADF11g-041:禁止或允许其它网站添加ADF页面到iframe中
- 32/64位处理器、操作系统、应用程序和库之间有什么关系?
- 机器学习sklearn----通过轮廓系数确定适合的n_clusters
- 【⚠️windows删除文件夹抽风了⚠️】“错误0x80070091:目录不是空的”问题处理
- linux下磁带备份
- 【解决方案】adb无法连接雷电模拟器问题
- jQuery 实现贪吃蛇游戏
- javaScript简单项目案例
- 数值优化:一阶和二阶优化算法(Pytorch实现)
- android10.0 bootanimation系统高仿Iphone苹果开机动画
- 我的投资观和投资方法
- 物流自动化分拣系统信息体系架构
热门文章
- 产业升级浪潮下,道元实业如何带领半导体料盘包装工序走向自动化变革
- 设多个闹钟反复惊醒可致慢性疲劳?!央视:建议一次性起床
- 软件测试面试两个月,我是如何找到工作的?面试总结分享给大家
- go vet 报错:xx_xx passes lock by value: sync.Map contains sync.Mutex; call of xx_xx copies lock value
- python pexpect timeout_python pexpect模块
- js,jq表格/文本内容溢出,用三个点替代,鼠标悬停时显示全部内容
- SOLIDWORKS 30个使用技巧
- alert日志中出现Private Strand Flush Not Complete的处理方法
- C#获取Excel表格所有sheet名(Epplus)
- Expires:Thu, 19 Nov 1981 08:52:00 GMT