我必须做啥才能将 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】:
你试过flush
cout
例如
std::cout << "File not found" << std::endl;
std::cout << std::flush;
【讨论】:
std::endl
刷新流,无需调用std::cout << std::flush
【参考方案2】:
cv::waitKey
在返回前等待 5 秒(5000 毫秒),除非用户按下键盘按钮,但由于没有显示窗口,因此不会被捕获。您是否尝试过在运行程序时等待几秒钟?
【讨论】:
是的,我等了 5 秒。什么都没发生waitKey()
仅在至少一个 highgui 窗口处于活动状态时有效。以上是关于我必须做啥才能将 cout 与 opencv 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]
NSSecureCoding 实现类必须在共享框架中才能与 XPC 一起使用吗?