OpenCV为键盘事件设置回调 我在OSX和Ubuntu系统中使用C++中的OpenCV。

OpenCV为键盘事件设置回调 我在OSX和Ubuntu系统中使用C++中的OpenCV。,c++,opencv,unix,callback,keyboard,C++,Opencv,Unix,Callback,Keyboard,我想要一个等价的函数setMouseCallback,但用于键盘事件(按键) 我在openCV中看到的方法是使用waitKey(),但实际上它不能作为回调,因为它会停止正常流等待指定的事件 问题是,我正在从网络摄像头传输视频,所以这个解决方案对我没有好处 是否有任何适当的函数可以为键盘事件设置回调,就像为鼠标事件设置回调一样?OpenCV没有提供非常健壮的UI层,特别是在访问输入设备方面。至少在根据标准依赖项编译时是这样。您可能需要研究如何使用编译OpenCV,它提供了更多的I/O控制。或者,更

我想要一个等价的函数
setMouseCallback
,但用于键盘事件(按键)

我在openCV中看到的方法是使用
waitKey()
,但实际上它不能作为回调,因为它会停止正常流等待指定的事件

问题是,我正在从网络摄像头传输视频,所以这个解决方案对我没有好处


是否有任何适当的函数可以为键盘事件设置回调,就像为鼠标事件设置回调一样?

OpenCV没有提供非常健壮的UI层,特别是在访问输入设备方面。至少在根据标准依赖项编译时是这样。您可能需要研究如何使用编译OpenCV,它提供了更多的I/O控制。或者,更简单地说,使用一个功能更强大的输入库,可以访问原始设备数据,例如,我已成功地将其用于GUI方法不提供I/O层的库。

感谢您的回复。你听说过维兹吗?这里建议使用VIZ代替VTK。你觉得怎么样?我在遵循你的建议,但是我在编译一个包含图书馆的项目时遇到了问题。你能看看下面的帖子,看看你是否知道解决方案吗?非常感谢。从:“…有时需要快速尝试功能并将结果可视化。这就是HighGUI模块的设计目的”基本上(至少在我看来),对于除原型以外的任何产品,您并不真正关心UI性能,也不需要太多其他功能,只需使用很少的简单控件来显示图像,你应该选择一个合适的UI工具包并自己实现它。然而,我不认为缺少键盘回调是一个真正的问题。您不必调用
waitKey
,因为这就是运行消息循环并在适当的事件发生时调用回调的原因(即waitKey not running=>no callbacks)。它在获得一个按键事件后立即退出,因此您可以想象,在处理按键后立即再次调用它更麻烦的是等待的粒度,这将使保持一致的帧速率变得困难(即使您将视频捕获转移到另一个线程,尽管这会有所帮助)。确切地说,waitkey不会停止您的程序流以等待输入。如果您在不等待的情况下按键,事件将丢失/它可能取决于平台,但至少在Windows上,只要我聚焦窗口,无论程序做什么,它都会获取关键事件,并在后续的
waitKey
调用中响应它们(例如,我在
时间内有程序。睡眠
,按4个键,然后可以调用
waitKey
4次,按顺序获取键码。根据我对WinAPI和windows HighGUI后端实现的了解,这正是我所期望的。我希望其他后端也会类似,因为应用程序并不总是只是p在转储消息时,如果它们错过了输入事件,那就很奇怪了。