【发布时间】:2014-08-16 21:22:30
【问题描述】:
我有一个像 OpenCV 教程一样打开的窗口,但我希望能够关闭窗口并在我的程序中执行其他操作。图像显示正确,但是当调用 destroyWindow 时,它似乎什么都不做,只是移动到下一行代码。我也尝试过 destroyAllWindow() 以及相同的结果。我发现的与此相关的大多数问题都是针对 C 的,或者他们只是说使用 destroyWindow() 但这对我不起作用。
#include <iostream>
#include <string>
#include "opencv2/core/core.hpp"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>//FOR TESTING
void MyPause(std::string msg){
if(msg != ""){
std::cout << "[+] " << msg << std::endl;
}
std::cout << "Press enter to continue" << std::endl;
std::cin.get();
}
void DisplayMat(cv::Mat img){
cv::namedWindow( "Input", cv::WINDOW_AUTOSIZE );// Create a window for display.
cv::imshow( "Input", img );
cv::waitKey(0);
cv::destroyWindow("Input");
return;
}
std::string filename = "/home/nedwards/Code/projectFiles/testMedia/myYellow.jpg";
int main(){
DisplayMat(som.inputImg);//just assume that som.input is a correctly opend Mat... it is!
MyPause("END OF MAIN");
return 0;
}
【问题讨论】:
-
cv::waitKey(0);无限等待某个键,因此在您按下某个键后窗口应该关闭,如果您想显示窗口几秒钟然后关闭它,请尝试 cv::waitKey(2000); (2 秒)。试试这个,窗口还是不想关闭?
-
我不希望窗口弹出 x 秒然后关闭。我希望这个人在选择窗口的情况下按下一个键,然后窗口关闭。似乎很多人都遇到过销毁创建的窗口的问题,但很少有人想出解决问题的办法。