【问题标题】:Do not display python OpenCV error不显示 python OpenCV 错误
【发布时间】:2017-05-11 15:10:12
【问题描述】:

我正在使用 OpenCV 和 python,更具体地说是 cv2findTransformECC 函数来执行图像配准。如果算法不收敛,此函数可能会引发错误。我用一个简单的try ... except 指令捕获了错误,然后我处理了错误。但是 OpenCV 错误消息仍然显示在我的终端中,我想隐藏它。我该怎么办?

这是一个简单的例子

try:
    cc, warp_matrix = cv2.findTransformECC(img1, img2, warp_matrix)
except cv2.error:
    cc = 15;
    print("An error occured but it does not matter")

如果 findTrnaformECC 函数抛出错误,我的程序会正确输出我的自定义错误消息 (An error occured but it does not matter),但也会出现 OpenCV 错误 (OpenCV Error: Iterations do not converge (The algorithm stopped before its convergence. The correlation is going to be minimized. Images may be uncorrelated or non-overlapped) in findTransformECC, file /home/travis/miniconda/conda-bld/conda_1485299288502/work/opencv-3.2.0/modules/video/src/ecc.cpp, line 530),我想防止这种情况发生。

【问题讨论】:

  • 错误写入stderr。所以你可以redirect stderr。或者你可以告诉opencv to suppress the output,但我不知道cv::redirectError函数是否有Python绑定
  • 这看起来不错,但重定向标准错误并没有做任何事情......
  • 看起来这已在更高版本的 OpenCV 中得到修复:在 v4.5.3.56 中,上述使用 except cv2.error: 的方法足以捕获异常,并且额外的输出不会写入 stderr

标签: python opencv error-handling


【解决方案1】:

重定向 stderr 似乎不起作用,但它让我想到了从命令行重定向它,这很好用(在基于 Unix 的系统上)

python myscript.py 2> /dev/null

但是,这将隐藏应在stderr 上显示的所有其他错误。这不是我精确应用的问题,但它可能是。

【讨论】:

    猜你喜欢
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2012-07-30
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多