【OpenCV】OpenCV输入处理(鼠标事件_键盘事件_滑块事件)
来源:互联网 发布:算法导论第三版.pdf 编辑:程序博客网 时间:2024/06/02 06:52
1、输入处理
x,y: 相对于左上角的像素坐标
event: CV_EVENT_LBUTTONDOWN, CV_EVENT_RBUTTONDOWN, CV_EVENT_MBUTTONDOWN,
CV_EVENT_LBUTTONUP, CV_EVENT_RBUTTONUP, CV_EVENT_MBUTTONUP,
CV_EVENT_LBUTTONDBLCLK, CV_EVENT_RBUTTONDBLCLK, CV_EVENT_MBUTTONDBLCLK,
CV_EVENT_MOUSEMOVE:
flags: CV_EVENT_FLAG_CTRLKEY, CV_EVENT_FLAG_SHIFTKEY, CV_EVENT_FLAG_ALTKEY,
CV_EVENT_FLAG_LBUTTON, CV_EVENT_FLAG_RBUTTON, CV_EVENT_FLAG_MBUTTON
注册该事件处理程序:
mouseParam=5;
cvSetMouseCallback("win1",mouseHandler,&mouseParam);
按一定间隔检测键盘输入(适用于循环体中) :
int key;
key=cvWaitKey(10); // wait 10ms for input
中止程序等待键盘输入:
int key;
key=cvWaitKey(0); // wait indefinitely for input
键盘输入的循环处理程序:
while(1){
key=cvWaitKey(10);
if(key==27) break;
switch(key){
case 'h':
...
break;
case 'i':
...
break;
}
void trackbarHandler(int pos)
{
printf("Trackbar position: %d\n",pos);
}
注册该事件处理程序:
int trackbarVal=25;
int maxVal=100;
cvCreateTrackbar("bar1", "win1", &trackbarVal ,maxVal , trackbarHandler);
获取当前的滑动条位置:
int pos = cvGetTrackbarPos("bar1","win1");
设置滑动条位置:
(1) 处理鼠标事件:
void mouseHandler(int event, int x, int y, int flags, void* param){switch(event){case CV_EVENT_LBUTTONDOWN:if(flags & CV_EVENT_FLAG_CTRLKEY)printf("Left button down with CTRL pressed\n");break;case CV_EVENT_LBUTTONUP:printf("Left button up\n");break;}}
x,y: 相对于左上角的像素坐标
event: CV_EVENT_LBUTTONDOWN, CV_EVENT_RBUTTONDOWN, CV_EVENT_MBUTTONDOWN,
CV_EVENT_LBUTTONUP, CV_EVENT_RBUTTONUP, CV_EVENT_MBUTTONUP,
CV_EVENT_LBUTTONDBLCLK, CV_EVENT_RBUTTONDBLCLK, CV_EVENT_MBUTTONDBLCLK,
CV_EVENT_MOUSEMOVE:
flags: CV_EVENT_FLAG_CTRLKEY, CV_EVENT_FLAG_SHIFTKEY, CV_EVENT_FLAG_ALTKEY,
CV_EVENT_FLAG_LBUTTON, CV_EVENT_FLAG_RBUTTON, CV_EVENT_FLAG_MBUTTON
注册该事件处理程序:
mouseParam=5;
cvSetMouseCallback("win1",mouseHandler,&mouseParam);
(2) 处理键盘事件:
按一定间隔检测键盘输入(适用于循环体中) :
int key;
key=cvWaitKey(10); // wait 10ms for input
中止程序等待键盘输入:
int key;
key=cvWaitKey(0); // wait indefinitely for input
键盘输入的循环处理程序:
while(1){
key=cvWaitKey(10);
if(key==27) break;
switch(key){
case 'h':
...
break;
case 'i':
...
break;
}
}
(3) 处理滑动条事件:
void trackbarHandler(int pos)
{
printf("Trackbar position: %d\n",pos);
}
注册该事件处理程序:
int trackbarVal=25;
int maxVal=100;
cvCreateTrackbar("bar1", "win1", &trackbarVal ,maxVal , trackbarHandler);
获取当前的滑动条位置:
int pos = cvGetTrackbarPos("bar1","win1");
设置滑动条位置:
cvSetTrackbarPos("bar1", "win1", 25);
#include <stdio.h>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;using namespace std;#define NAME "TrackerDemo"Mat img1;Mat img2;Mat dstImg;const int nMaxSlider = 100;int nAlphaSlider;double dAlphaVaule;double dBetaValue;void duan_TrackBar(int , void*){dAlphaVaule = (double) nAlphaSlider / nMaxSlider;dBetaValue = 1.0 - dAlphaVaule;addWeighted(img1, dAlphaVaule, img2, dBetaValue, 0, dstImg);imshow(NAME, dstImg);}int main(){img1 = imread("11.jpg");if (!img1.data){printf("Read image 1 ERROR!\n");}img2 = imread("22.jpg");if (!img2.data){printf("Read image 2 ERROR!\n");}nAlphaSlider = 70;namedWindow(NAME,1);char TrackBarName[50];sprintf(TrackBarName, "TouMingZhi %d ", nAlphaSlider);createTrackbar(TrackBarName, NAME, &nAlphaSlider, nMaxSlider, duan_TrackBar);duan_TrackBar(nAlphaSlider, 0);waitKey(0);return 0;}
0 0
- 【OpenCV】OpenCV输入处理(鼠标事件_键盘事件_滑块事件)
- OpenCV之鼠标和键盘事件处理
- 【OpenCV】 处理鼠标事件
- Opencv处理鼠标事件
- opencv 处理鼠标点击事件
- android开发_MotionEvent与其他事件处理_手势_键盘_鼠标
- Event事件对象之鼠标_键盘事件对象
- OpenCV 鼠标事件 注意事项
- OpenCV--鼠标事件响应
- OpenCV 鼠标事件
- OpenCV添加鼠标事件
- Learning OpenCV 鼠标事件
- Opencv鼠标事件
- opencv之鼠标事件
- Opencv 鼠标事件GUI
- openCV鼠标事件学习
- opencv鼠标响应事件
- opencv:鼠标事件
- 反射对应泛型参数的调用
- Objective-C自定义加载菊花UIActivityIndicatorView
- mybatis逆向生成javaBean
- 判断后边的点是否在前边的区域呢i
- Spring Data Jpa: 分页和排序
- 【OpenCV】OpenCV输入处理(鼠标事件_键盘事件_滑块事件)
- Mysql学习总结(14)——Mysql主从复制配置
- 清空NSMutableArray所有内容
- 相机或相册选择图片
- 串口通信概念基础
- oracle 导出指定表
- HTML5表单属性(四)
- lambda表达式的的两个内置函数的用法
- 关于意义这个东西