我刚刚开始使用OpenCv 3.1,并且遇到了以下令人讨厌的行为。每当我初次调用imshow(实际上是cv2.imshow,因为我正在使用Python接口(interface))时,都会将此输出显示到屏幕上:

init done
opengl support available

这似乎是由于window_QT.cpp中的以下方法引起的:
static int icvInitSystem(int* c, char** v)
{
    //"For any GUI application using Qt, there is precisely one QApplication object"
    if (!QApplication::instance())
    {
        new QApplication(*c, v);
        setlocale(LC_NUMERIC,"C");

        qDebug() << "init done";

#ifdef HAVE_QT_OPENGL
        qDebug() << "opengl support available";
#endif
    }

    return 0;
}

我能想到的就是注释掉qDebug调用并重新编译OpenCV。是否有没有那么激烈的解决方案会自动将qDebug的输出重定向到stderr,或者只是关闭调试信息,除非我主动想要它?

最佳答案

qDebug是受预处理程序控制的,但是它具有自己的特殊宏QT_NO_DEBUG_OUTPUT。如果将其添加到发布版本定义中,它将被删除。

关于python - 如何停止opencv调用qDebug?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38553902/

10-10 13:20