Agisoft Metashape
Agisoft Metashape => Python and Java API => Topic started by: Bolli on February 15, 2022, 10:43:09 PM
-
Hello Forum,
I'm using Metashape 1.7.0 and am trying to piece meal some python code together to process some photos into dense clouds. I've gotten the code to run all the way through but what I notice is that, despite using doc.save(path) at the beginning and doc.save() throughout the code, that the project is virtually blank when I open it up. I've seen some other forum posts like https://www.agisoft.com/forum/index.php?topic=12003.0 (https://www.agisoft.com/forum/index.php?topic=12003.0) and https://www.agisoft.com/forum/index.php?topic=8662.0 (https://www.agisoft.com/forum/index.php?topic=8662.0), but am struggling with figuring this out.
Here is the top part of my code before I start going into the processing and doc.save() steps where I would expect to get a .psx with my photos loaded into it:
import Metashape
import os, sys, time
import math
import json
#Definitions
img_path = sys.argv[1]
export_folder = "Exports"
proj_dir, jpeg_name = os.path.split(img_path)
base_dir, proj_name = os.path.split(proj_dir)
print()
export_path = os.path.join(proj_dir,export_folder)
#make sure the export workspace exists. if not - make them.
if not os.path.exists(export_path):
os.makedirs(export_path)
##Define photos list
photos = [os.path.join(img_path, file)
for file in os.listdir(img_path)
if file.endswith('.JPG')]
#Define which document
doc = Metashape.Document()
#Define which chunk
chunk = Metashape.app.document.chunk
doc.save(export_path + '/' + proj_name + '.psx')
#Add Photos
chunk.addPhotos(photos)
doc.save()
print(str(len(chunk.cameras)) + " images loaded")
-
I think I've defined chunk incorrectly to get the save to work properly.
I'm struggling with when to use the following:
chunk = Metashape.app.document.chunk
chunk = doc.chunk
chunk = doc.addChunk()
AND
doc = Metashape.Document()
doc = Metashape.app.document
-
Hello Bolli,
Try to use the lines inthe following order:
doc = Metashape.Document()
doc.save(export_path + '/' + proj_name + '.psx')
chunk = doc.addChunk()
chunk.addPhotos(...)
doc.save()
chunk.matchPhotos(...)
...
doc.save()
Metashape.app.document and Metashape.app.document.chunk wouldn't work for the scripts started outside Metashape GUI.
-
Thanks for that reply. That ends up working. I am starting all of my scripts from inside the GUI though. I don't see any of my items in the GUI but now they are saved and I can load them later. Thanks!
-
Hello Bolli,
If you wish to see the results in the GUI right after the script is finished, you need to replace doc = Metashape.Document() with doc = Metashape.app.document line.