gpt4 book ai didi

c++ - 在带有 Qt 的 Linux Ubuntu 平台上使用 OpenCV 2.2 显示图像

转载 作者:IT王子 更新时间:2023-10-29 01:19:16 26 4
gpt4 key购买 nike

我正在使用 Qt作为我在 Ubuntu 10.10 和 OpenCV 2.2 上的 C++ IDE 平台。

我将只写一段代码并显示问题出在哪里:

#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, char *argv[])
{
VideoCapture cap = VideoCapture(0);
Mat frame;
do
{
cap >> frame;
imshow("frame",frame);
} while (waitKey(10) != 27);
return 0;
}

我收到 3 个警告打印输出,看起来像这样:

VIDIOC_QUERYMENU: Invalid argument

一切似乎都很好(相机工作正常)。

我不得不添加 Qt 的用法并添加了 3 行代码,它看起来像这样:

#include <QApplication>
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, char *argv[])
{
QApplication app(argc,argv);
VideoCapture cap = VideoCapture(0);
Mat frame;
do
{
cap >> frame;
imshow("frame",frame);
} while (waitKey(10) != 27);

return app.exec();
}

我仍然收到 3 条警告线,但现在“框架”窗口是灰色的,没有显示任何内容。

这是我第一次使用Qt,所以我真的不知道它是如何工作的。我只能猜测 QApplication 正在控制窗口管理,这导致 imshow 命令无法打开新窗口。

最佳答案

您的假设不正确。 OpenCV 将有自己的 X 服务器连接,并且不受 Qt 窗口管理的影响(但是,waitKey() 输入处理和 app.exec() 不会并行工作)。

我还测试了类似的代码以发现任何不可预见的副作用。在我的装有 OpenCV 2.2 和 Qt 4.6.2 的 Debian 机器上,所有窗口都可以正常绘制。

您这边的一个简单测试可能是在您的 while 循环之后创建 app 对象。但是,可能只是堆栈布局中的随机更改导致您的警告成为一个严重的问题?您还应该检查 valgrind。

关于c++ - 在带有 Qt 的 Linux Ubuntu 平台上使用 OpenCV 2.2 显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com