gpt4 book ai didi

c++ - 尝试关闭 OpenCV 窗口无效

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:16 25 4
gpt4 key购买 nike

我正在使用 OpenCV 捕捉网络摄像头图像。那很好用。但是如果我想在按下按钮时关闭 OpenCV,它就不起作用(尝试了 cvDestroyWindow("NameOfWindow")cvDestroyAllWindows())。窗口保持打开状态,应用程序仍在运行。

OpenCV 是在与主 GUI 不同的线程上初始化的。

我在我的 Mac 上使用带有 C++ 的 Juce 框架。但是当 OpenCV 窗口有它自己的 cvNamedWindow 时,同样的问题也会出现在带有 Qt 和 Windows Forms 的 Windows 上。

下面是VST插件编辑器类的基本代码:

插件编辑器.cpp

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

#include "PluginProcessor.h"
#include "PluginEditor.h"

//
TestAudioProcessorEditor::TestAudioProcessorEditor (TestAudioProcessor* ownerFilter)
: AudioProcessorEditor (ownerFilter)
{

// This is where our plugin's editor size is set.
setSize (500, 500);

// open the tracker
openTracker();
}

// code for opencv handling
TestAudioProcessorEditor::openTracker() {

// KEY LINE: Start the window thread
cvStartWindowThread();

// Create a window in which the captured images will be presented
cvNamedWindow( "Webcam", CV_WINDOW_AUTOSIZE );

cvWaitKey(0);

cvDestroyWindow( "Webcam" );
// window should disappear!
}


TestAudioProcessorEditor::~TestAudioProcessorEditor()
{

}

// paint stuff on the vst plugin surface
void TestAudioProcessorEditor::paint (Graphics& g) {
}

最佳答案

您可能缺少的部分是对 cvStartWindowThread 函数的调用。

在 Linux 上,使用 GTK HighGUI,这个例子重现了你的问题,直到我调用了 cvStartWindowThread

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc_c.h"

#include <iostream>
using namespace std;

int main( int argc, char** argv )
{
// KEY LINE: Start the window thread
cvStartWindowThread();

// Open a window
cvNamedWindow("original", 0);

// Wait until a key gets pressed inside the window
cvWaitKey(0);

// Close the window
cvDestroyWindow("original");

// Verify that the window is closed
cout<<"The window should be closed now. (Press ENTER to continue.)"<<endl;
string line;
getline(cin, line);
cout<<"Exiting..."<<endl;
}

如果 cvStartWindowThread 没有帮助,请尝试在 cvDestroy 调用之后额外调用 cvWaitKey

要运行该示例,请使用 GCC 对其进行编译:

g++ destroy_window.cpp -o destroy_window -lopencv_core -lopencv_highgui

关于c++ - 尝试关闭 OpenCV 窗口无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139968/

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