我正在用c++编写一个实时视频处理程序,并希望能够切换具有相同mjpeg流的三个窗口,颜色、灰度和单色。我已经运行了所有的图像提要,但是,由于我的屏幕很小,我希望能够单独地切换它们。为了做到这一点,我编写了下面的代码,但是调用destroyWindow(“窗口名”);而不是停止整个程序。我已经读过这些文档了,把空放在前面也没什么用。有人能告诉我我做错了什么吗?下面是代码(,它在一个无限循环中,直到下面看到的中断称为):
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;
}
}发布于 2014-02-16 06:00:59
您粘贴的代码在调用destroyWindow后终止(通过从main的末尾运行)。如果这不是您想要发生的情况,那么编写代码,在调用destroyWindow之后执行其他操作。也许你想要一个循环?
https://stackoverflow.com/questions/21807826
复制相似问题