列表集成作为参数(初学者)

时间:2012-07-24 20:27:25

标签: python

我在python中编写脚本,但我是初学者(昨天开始)。

基本上,我只是创建了大量的填充~10张图片,对齐它们,构建模型以及构建纹理。现在我有我的块,我想对齐它们......

来自manual

  

PhotoScan.alignChunks(chunks, reference, method=’points’, accuracy=’high’, preselection=False)

     

对齐特定的块组。

     

参数

     
      
  • chunks(list) - 要对齐的块列表。
  •   
  • reference(Chunk) - 用作参考的块。
  •   
  • method(string) - ['points','markers']中的对齐方法。
  •   
  • 准确度(字符串) - ['高','中','低']的对齐精度。
  •   
  • preselection(boolean) - 启用图像对预选。
  •   
     

返回操作成功。

     

返回类型boolean

我尝试对齐块,但脚本在第26行抛出错误:

  

TypeError:期望一个块列表作为参数

你知道我怎么能让它发挥作用吗?

这是我目前的代码:

import PhotoScan
doc = PhotoScan.app.document
main_doc = PhotoScan.app.document
chunk = PhotoScan.Chunk()
proj = PhotoScan.GeoProjection()
proj.init("EPSG::32641")
gc = chunk.ground_control
gc.projection = proj
working_path = "x:\\New_agisoft\\ok\\Optical\\"
for i in range (1,3):
    new_chunk = PhotoScan.Chunk()
    new_chunk.label = str(i)
    loop = i*10 
    loo = (i-1)*10
    doc.chunks.add(new_chunk)
    for j in range (loo,loop):
        file_path = working_path + str(j) + ".jpg"
        new_chunk.photos.add(file_path)
    gc = new_chunk.ground_control
    gc.loadExif()
    gc.apply()
    main_doc.active = len(main_doc.chunks) - 1
    doc.activeChunk.alignPhotos(accuracy="low", preselection="ground control")
    doc.activeChunk.buildModel(quality="lowest", object="height field", geometry="smooth", faces=50000)
    doc.activeChunk.buildTexture(mapping="generic", blending="average", width=2048, height=2048)
PhotoScan.alignChunks(,1,method="points",accuracy='low', preselection=True)

2 个答案:

答案 0 :(得分:2)

PhotoScan.alignChunks(,1,method="points",accuracy='low', preselection=True)
                      ^

在'之前',你需要这些块!

答案 1 :(得分:1)

注意:我从未使用过这个模块。

您使用空的第一个参数调用PhotoScan.alignChunks,而文档声明它需要一个块列表。

您可以在循环之前初始化一个空列表:

chunks = []

然后从循环内部将完成的块添加到列表中:

    # ...
    chunks.append(new_chunk)

然后调用函数:

PhotoScan.alignChunks(chunks, chunk[0], ...)