opencv viz 模块的键盘操作 registerKeyboardCallback
来源:互联网 发布:center os安装windows 编辑:程序博客网 时间:2024/06/07 02:18
opencv中键盘操作比较简单的是imshow中的
在imshow的窗口激活的时候 如果有按键按下 则可以使用waitKey()来获取键盘的键值
当然复杂一点也能使用回调函数来做 之前的博文中已经有相关的介绍了
就不在这里展开了
今天讲一讲最近使用点云显示模块viz时候
需要用一些交互 于是乎发现waitKey()在viz::Viz3d中不能起作用
下面详细说一下 viz中如何使用键盘交互
首先是先创建viz::Viz3d窗口对象
并使用成员函数键盘 - 回调函数
viz::Viz3d win("Frame"); win.registerKeyboardCallback(KeybdCallback);
然后实现该回调函数中函数指针的具体功能
这里的参数类型是参考了opencv原文中的
KeyboardCallback
typedef void(* cv::viz::Viz3d::KeyboardCallback) (const KeyboardEvent &, void *)
void KeybdCallback(const viz::KeyboardEvent &keyEvent, void *){ if ((keyEvent.action == viz::KeyboardEvent::KEY_DOWN) && (keyEvent.code == 'a')) { printf("press a\n"); }}
再深一点
写成传参的回调函数
int keyv = 0; win.registerKeyboardCallback(KeybdCallback, &keyv);
同样,需要实现该回调函数中函数指针的具体功能
void KeybdCallback(const viz::KeyboardEvent &keyEvent, void *val){ int *pKey = (int *)val; if (keyEvent.action == viz::KeyboardEvent::KEY_DOWN) { if (keyEvent.code == 'a') { *pKey = 1; printf("Key 1\n"); } if (keyEvent.code == 's') { *pKey = 2; printf("Key 2\n"); } if (keyEvent.code == 'd') { *pKey = 3; printf("Key 3\n"); } }}
鼠标操作也是一个重要的交互方式
int keyv = 0; win.registerMouseCallback(MsCallback, &keyv);
然后是回调函数
这里举例了右键操作的回调
打印鼠标坐标点(以左下角为原点O)
当val==1 则增加为2
void MsCallback(const viz::MouseEvent &mouseEvent, void *val){ int *pMouse = (int *)val; if (mouseEvent.button == viz::MouseEvent::RightButton) { if (mouseEvent.type == viz::MouseEvent::MouseButtonPress) { cout << "Point: " << mouseEvent.pointer << endl; if (*pMouse == 1) { *pMouse = 2; printf("Key 2\n"); return; } } }}
阅读全文
0 0
- opencv viz 模块的键盘操作 registerKeyboardCallback
- ubuntu安装OPENCV的VIZ模块
- OpenCV Viz 3D虚拟空间模块
- OpenCV学习篇2:viz模块简单用法
- opencv viz module example
- viz.
- build opencv viz module 配置VTK路径
- Viz Artist中关键帧的Viz CMDS使用示例
- opencv c++函数 imgproc模块 5 基本的阈值操作
- opencv 中通过鼠标和键盘操作实现图像的平移
- 9.17键盘的操作
- [Learning OpenCV入门 1]OpenCV模块以及基本操作
- Viz Artist高级脚本视频教程---StringMap使用和Vertex操作
- 在Viz 3.x中如何导入Viz 2.8的打包文件.eva
- opencv 收费模块的使用
- OpenCV的各个模块介绍
- OpenCv每个模块的作用
- OpenCV的所有模块介绍
- TCP通信过程大讨论
- 简单的浅拷贝和深拷贝
- 电子词典C语言实现
- 森林和二叉树的转化
- LeetCode 50. Pow(x, n)--幂实现
- opencv viz 模块的键盘操作 registerKeyboardCallback
- CodeForces Weakness and Poorness
- 在linux下图形界面和命令行界面的切换
- WEB 集群与负载均衡(一)基本概念
- 信号捕捉
- 598. Range Addition II
- PHP基础教程-17 布尔运算符
- 郑轻 ZZULIOJ 2136: ht的生日party
- 单链表(增删改查)