windows下 opencv destroyAllWindows 异常解决记录

最近写调试图开关接口,发现调用destroyAllWindows()和destroyWindow()时异常,函数进入后不报错不返回。

 

查找原因,是多线程问题,跨线程调用会出现问题。

解决方法:

窗口绘制,和销毁函数在一个线程内调用。运行成功。

主线程绘制 -> 主线程销毁。

子线程a绘制-> 子线程a销毁。

子线程b绘制-> 子线程b销毁。

 

另外一种解决思路参考RyanLeiWang的博客

https://blog.csdn.net/segments/article/details/78891868

获取该窗体的句柄,不需要显示时,隐藏它,需要显示时,重新show出来

#include 
HWND hCvWnd = FindWindow(NULL, L"windowname");
SetWindowPos(hCvWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_HIDEWINDOW); // hide window
SetWindowPos(hCvWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);  // show window

 

 

你可能感兴趣的:(opencv)