windows下 opencv destroyAllWindows 异常解决记录

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

 

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

解决方法:

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

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

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

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

 

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

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

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

#include <windows.h>
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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜡笔小心点

你的鼓励是我创造的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值