首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >destroyWindow (来自opencv)关闭所有窗口并停止c++程序

destroyWindow (来自opencv)关闭所有窗口并停止c++程序
EN

Stack Overflow用户
提问于 2014-02-16 05:48:31
回答 1查看 2K关注 0票数 0

我正在用c++编写一个实时视频处理程序,并希望能够切换具有相同mjpeg流的三个窗口,颜色、灰度和单色。我已经运行了所有的图像提要,但是,由于我的屏幕很小,我希望能够单独地切换它们。为了做到这一点,我编写了下面的代码,但是调用destroyWindow(“窗口名”);而不是停止整个程序。我已经读过这些文档了,把空放在前面也没什么用。有人能告诉我我做错了什么吗?下面是代码(,它在一个无限循环中,直到下面看到的中断称为):

代码语言:javascript
复制
    imshow("Color", imageColor);
    imshow("Monochrome", imageMonochrome);
    imshow("Grayscale", imageGrayscale);

    int keyPressed = waitKey(0);
    if (keyPressed > 0)
    {
        cout << keyPressed;
        cout << "key was pressed\n";
        // Press C to toggle color window
        if (99 == keyPressed)
        {
            if (colorOpen)
            {
                cout << "Color window closed\n";
                void destroyWindow("Color");
                colorOpen = false;
            }
            if (!colorOpen)
            {   
                cout << "Color window opened\n";
                imshow("Color", imageColor);
                colorOpen = true;
            }
        }

        // Press M to toggle monochrome window
        if (109 == keyPressed)
        {
            if (monochromeOpen)
            {
                cout << "Monochrome window closed\n";
                void destroyWindow("Monochrome");
                monochromeOpen = false;
            }
            if (!monochromeOpen)
            {
                cout << "Monochrome window opened\n";
                imshow("Monochrome", imagebw);
                monochromeOpen = true;
            }
        }

        // Press G to toggle grayscale window
        if (103 == keyPressed)
        {
            if (grayscaleOpen)
            {
                cout << "Grayscale window closed\n";
                void destroyWindow("Grayscale");
                grayscaleOpen = false;
            }
            if (!grayscaleOpen)
            {
                cout << "Grayscale window opened\n";
                imshow("Grayscale", image);
                grayscaleOpen = true;
            }
        }
        // Break out of infinite loop when [ESC] is pressed:   
        if (27 == keyPressed)
        {
            cout << "Escape Pressed\n";
            break;
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-02-16 06:00:59

您粘贴的代码在调用destroyWindow后终止(通过从main的末尾运行)。如果这不是您想要发生的情况,那么编写代码,在调用destroyWindow之后执行其他操作。也许你想要一个循环?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21807826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档