Stop a function from writing to stdout

杀马特。学长 韩版系。学妹 提交于 2019-12-02 04:11:13

It's not OpenCV that outputs this info. It's FFMPEG (which is called by OpenCV).

You can recompile FFMPEG to disable these debugs.

import os
import sys
saved_stdout, saved_stderr = sys.stdout, sys.stderr
sys.stdout = sys.stderr = open(os.devnull, "w")
writer = cv.CreateVideoWriter('video.avi', cv.CV_FOURCC('X','V','I','D'), 30 ,(480,800), 1)
sys.stdout, sys.stderr = saved_stdout, saved_stderr
print 'Now this will print to stdout'

Demo:

>>> import os
>>> import sys
>>> saved_stdout, saved_stderr = sys.stdout, sys.stderr
>>> sys.stdout = sys.stderr = open(os.devnull, "w")
>>> print 'hello world'                     # no output
>>> sys.stderr.write('Invisible Error!\n')  # no ouput
>>> sys.stdout, sys.stderr = saved_stdout, saved_stderr
>>> print 'goodbye world'                   
goodbye world
>>> sys.stderr.write('Error!\n')
Error!
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!