0

我正在使用 ocropus 来对未分割的图像进行二值化和分割。我使用命令通过 ocropus 将图像文件二值化为

ocropus-binarize -o book /home/images/*.tif

通过使用上面提到的命令,它可以很好地处理一些图像,但一段时间后它会提示一条错误消息,如下所示,

File "/usr/local/bin/ocropus-binarize", line 151, in <module>
   result = pool.map(process1, jobs)
File "/usr/lib/python2.7/multiprocessing/pool.py"
   return self.map_async(func, iterable, chunksize).get()
File "/usr/lib/python2.7/multiprocessing/pool.py", line 517, in get
   raise self._value
IndexError: narray: index out of range

任何有关此事的帮助将不胜感激。

4

1 回答 1

0

此答案与 OCRopus 无关,但通常与此错误有关,以供将来的谷歌搜索使用。

多处理模块将工作分成块并将每个块发送到工作进程。工作在如下所示的块中执行:

try:
    result = (True, func(*args, **kwds))
except Exception, e:
    result = (False, e)

where func()is apply()ormap()取决于你是否使用pool.apply()orpool.map()并且 args 和 kwds 包含你想要运行的函数和你想要运行它的数据。

如果您的函数引发异常,而不是直接排除工作进程,该错误将作为结果元组传递回管理所有工作人员的进程。主进程看到这一点(在上面报告的 multiprocessing.py:517 上,这取决于 Python 版本)并从您的函数中重新引发原始异常。

这是您的函数中的错误,可能在单个数据上。不幸的是,没有报告原始异常的行号,这使得调试有点棘手。

于 2013-12-16T20:05:30.123 回答