OpenCV destroyWindow () ничего не делает.

0

У меня есть окно, которое я открываю, как показано в учебниках OpenCV, но я хочу, чтобы я мог закрыть окно и делать другие вещи в своей программе. Изображение отображается правильно, но когда вызывается вызов destroyWindow, он ничего не делает и просто переходит к следующей строке кода. Я также попытался destroyAllWindow() также с тем же результатом. Большинство вопросов, связанных с этим, которые я нашел, для C, или они просто говорят use 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;
}
  • 1
    резюме :: WaitKey (0); ждите какую-то клавишу бесконечно, поэтому окно должно закрываться после нажатия какой-либо клавиши, если вы хотите, чтобы окно показывалось несколько секунд и после этого закрывало его, попробуйте cv :: waitKey (2000); (2с). Попробуйте, окно все еще не хочет закрываться?
  • 0
    Я не хочу, чтобы окно всплывало на x секунд, а затем закрывалось. Я хочу, чтобы человек нажал клавишу с выбранным окном, а затем оно закрывается. Кажется, у многих людей были проблемы с разрушением созданных окон, и лишь немногие придумали решение этой проблемы.
Теги:
opencv

1 ответ

0

Возможным решением этого является размещение:

cvStartWindowThread();

рядом с началом вашего кода (начало основного). Это может помочь в частом замедленном обмене событиями, которое происходит при вызове cvDestroyWindow(). Вы можете посмотреть здесь для получения более подробной информации.

Однако, как замечание, это не идеальное решение. Он хорошо работал с некоторыми из моего кода, но в настоящее время у меня возникают проблемы, когда задействованы другие прослушиватели событий, такие как waitKey(), которые, я думаю, понятны.

  • 0
    Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос . Вы также можете добавить награду, чтобы привлечь больше внимания к этому вопросу, когда у вас будет достаточно репутации .
  • 0
    Привет, я должен был сформулировать это более четко в качестве ответа, это не был вопрос. Я не такой уж новый :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню