【发布时间】:2017-05-11 15:10:12
【问题描述】:
我正在使用 OpenCV 和 python,更具体地说是 cv2 的 findTransformECC 函数来执行图像配准。如果算法不收敛,此函数可能会引发错误。我用一个简单的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。所以你可以redirectstderr。或者你可以告诉opencv to suppress the output,但我不知道cv::redirectError函数是否有Python绑定 -
这看起来不错,但重定向标准错误并没有做任何事情......
-
看起来这已在更高版本的 OpenCV 中得到修复:在 v4.5.3.56 中,上述使用
except cv2.error:的方法足以捕获异常,并且额外的输出不会写入 stderr
标签: python opencv error-handling