擅长:python、mysql、java
<p>我可能有一个解决方案,但我不能百分之百肯定,所以你必须自己检查:)我假设OpenCV在下面使用X11(如果没有任何一个是有意义的)。使用X11,您可以:</p>
<p>1)找到OpenCV窗口的X11窗口句柄,如<a href="https://stackoverflow.com/questions/6340101/how-to-find-a-gtkwindow-by-title">here</a></p>
<p>2)使用<code>XSelectInput</code>钩住它的事件循环,有点类似于<a href="https://stackoverflow.com/questions/16977872/xselectinput-is-not-working-for-buttonpressevents-how-to-do-it">here</a>。我假设您应该使用<code>StructureNotifyMask</code>作为掩码来获取<code>XDestroyWindowEvent</code>事件。运行X11事件循环,一旦得到相应的事件,就可以调用OpenCV<code>destroyWindow</code>函数。在</p>
<p>这个建议是基于假设的,我不能保证它会起作用,但据我所知,如果OpenCV不是用其他特定的窗口管理器构建的,那么它应该可以工作。据我所知,Raspbian是和X11一起运到某个地方的,然后它就转到了Wayland。如果你有一个Wayland的图像,那么这可能行不通(我很抱歉,我的Linux技能不包含如何确定哪一个是的方法)使用:D). 在</p>
<p><strong>更新</strong></p>
<p>实际上,经过更多的阅读之后,我似乎觉得gtk应该能够处理下面正在使用的任何东西(X11/Wayland)。因此,如果您安装gtk开发库,您还应该能够连接到windows删除信号,如所述<a href="https://stackoverflow.com/questions/6650132/gtk-c-how-to-edit-function-of-close-window-button-the-x-button-in-the-top-rig">here</a>。唯一的问题是如何获得窗口句柄。在</p>
<p>我个人的建议-使用Qt或其他一些GUI友好的框架来呈现OpenCV图像,而不是直接用OpenCV来实现。OpenCV是一个图像处理框架,但是IMHO highgui对于任何严肃的事情都是不可用的。在</p>