我必须做啥才能将 cout 与 opencv 一起使用?

Posted

技术标签:

【中文标题】我必须做啥才能将 cout 与 opencv 一起使用?【英文标题】:What I have to do to use cout with opencv?我必须做什么才能将 cout 与 opencv 一起使用? 【发布时间】:2014-08-05 09:35:48 【问题描述】:

我在 QT Creator 中使用 OpenCV 2.4.8,我试图在控制台中打印一些输出,但控制台保持为空。

这是一个简约的代码示例:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

int main()
    std::cout << "File not found" << std::endl;
    cv::waitKey(5000);

    return 1;

当我省略 cv::waitKey(5000) 行时,一切正常并打印文本。这段代码有什么问题?

编辑:我将代码更改为:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

int main()
    cv::Mat image;
    std::cout << "File not found" << std::endl;

    return 1;

控制台打开并显示类似“按回车键关闭控制台”的内容。当我删除行 cv::Mat 图像时,一切正常。控制台打开并显示“找不到文件”,并在下一行显示“按回车键关闭控制台”。当我使用 OpenCV 代码时,cout 不起作用。没有 OpenCV 代码一切正常。

EDIT2:现在我插入了一个 std::cin.get();在 std::cout 行之后,一切正常。我不知道有什么问题。但这对我来说没问题。

【问题讨论】:

您是否尝试在应用程序运行时按下键盘按钮? 当我按下键盘按钮时,控制台关闭 这运行得非常好(当然没有任何延迟)。你有没有尝试过除 Qt 之外的任何东西?你的输出被选到standard output了吗? 【参考方案1】:

你试过flushcout例如

std::cout << "File not found" << std::endl;
std::cout << std::flush;

【讨论】:

std::endl 刷新流,无需调用std::cout &lt;&lt; std::flush【参考方案2】:

cv::waitKey 在返回前等待 5 秒(5000 毫秒),除非用户按下键盘按钮,但由于没有显示窗口,因此不会被捕获。您是否尝试过在运行程序时等待几秒钟?

【讨论】:

是的,我等了 5 秒。什么都没发生 waitKey() 仅在至少一个 highgui 窗口处于活动状态时有效。

以上是关于我必须做啥才能将 cout 与 opencv 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

我必须做啥才能通过流星包含库,以便我可以使用打字稿?

我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]

将推力与 printf / cout 一起使用

NSSecureCoding 实现类必须在共享框架中才能与 XPC 一起使用吗?

我必须与我的 EXE 一起提供哪些 DLL 才能使用 Windows 10 通用 CRT?

当字符串命名为数值时我必须做啥