我有一个约1000 CR2图像序列,我需要转换为TIFF16。以下命令行起作用:
darktable-cli input_image.CR2 colorcard.xmp output.tiff --core --conf plugins/imageio/format/tiff/bpp=16
但是,当我想通过下面的Python代码并行执行该命令时,在转换一个图像后,我会遇到以下错误:
[init] the database lock file contains a pid that seems to be alive in your system: 31531
[init] database is locked, probably another process is already using it
ERROR: can't acquire database lock, aborting.
以下是我的Python代码:
#!/usr/bin/env python3
import glob
import shlex
import subprocess
import multiprocessing as mp
from multiprocessing import Pool
def call_proc(cmd):
subprocess.run(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
app = '/Applications/darktable.app/Contents/MacOS/darktable-cli '
xmp = ' colorcard.xmp '
opt = ' --core --conf plugins/imageio/format/tiff/bpp=16 --conf plugins/imageio/storage/disk/overwrite=true --library /tmp/darktable.db'
raw_images = glob.glob('indata/*')
procs = []
for raw_image in raw_images:
tif_image = raw_image.replace('.CR2', '.tif').replace('indata', 'outdata')
cmd = app + raw_image + xmp + tif_image + opt
procs.append(cmd)
pool = Pool(mp.cpu_count())
pool.map(call_proc, procs)
pool.close()
pool.join()
平台:
我找到了下面的thread,但对于给定的解决方案没有运气
非常感谢您的帮助
在{a1}中,@miguev给出了帮助我的答案。这并不漂亮,但很有效。我正在为每个图像添加一个
tmp
目录,并将其传递给configdir
属性,如下所示:当你在身后清理完毕后,你需要做的就是在最后完成
相关问题 更多 >
编程相关推荐